擅长:python、mysql、java
<p>我几乎可以肯定的是:当您第一次创建<code>otest</code>时,字符串按顺序存储在内存中。当您创建<code>utest</code>时,字符串指向相同的内存缓冲区,只是现在这些位置无序,这会影响无序测试用例的缓存性能。在</p>
<p>这是证据。我已将您的<code>get_test_data</code>函数替换为以下版本:</p>
<pre><code>def get_test_data(num, size):
olist, ulist = [], []
for _ in range(num):
nums = range(size)
random.shuffle(nums)
utest = [str(i) for i in nums]
otest = list(utest)
otest.sort(key=lambda x: int(x))
olist.append(otest)
ulist.append(utest)
return olist, ulist
</code></pre>
<p>我现在在内存中连续地构造<code>ulist</code>中的字符串,然后通过用适当的键对这些字符串排序来构建<code>olist</code>。在我的机器上,这会反转两个测试的运行时间。在</p>