stringbench is a set of performance tests comparing byte stringoperations with unicode operations. The two string implementationsare loosely based on each other and sometimes the algorithm for one isfaster than the other.These test set was started at the Need For Speed sprint in Reykjavikto identify which string methods could be sped up quickly and toidentify obvious places for improvement.Here is an example of a benchmark@bench('"Andrew".startswith("A")', 'startswith single character', 1000)def startswith_single(STR):s1 = STR("Andrew")s2 = STR("A")s1_startswith = s1.startswithfor x in _RANGE_1000:s1_startswith(s2)The bench decorator takes three parameters. The first is a shortdescription of how the code works. In most cases this is Python codesnippet. It is not the code which is actually run because the realcode is hand-optimized to focus on the method being tested.The second parameter is a group title. All benchmarks with the samegroup title are listed together. This lets you compare differentimplementations of the same algorithm, such as "t in s"vs. "s.find(t)".The last is a count. Each benchmark loops over the algorithm either100 or 1000 times, depending on the algorithm performance. The outputtime is the time per benchmark call so the reader needs a way to knowhow to scale the performance.These parameters become function attributes.Here is an example of the output========== count newlines38.54 41.60 92.7 ...text.with.2000.newlines.count("\n") (*100)========== early match, single character1.14 1.18 96.8 ("A"*1000).find("A") (*1000)0.44 0.41 105.6 "A" in "A"*1000 (*1000)1.15 1.17 98.1 ("A"*1000).index("A") (*1000)The first column is the run time in milliseconds for byte strings.The second is the run time for unicode strings. The third is apercentage; byte time / unicode time. It's the percentage by whichunicode is faster than byte strings.The last column contains the code snippet and the repeat count for theinternal benchmark loop.The times are computed with 'timeit.py' which repeats the test moreand more times until the total time takes over 0.2 seconds, returningthe best time for a single iteration.The final line of the output is the cumulative time for byte andunicode strings, and the overall performance of unicode relative tobytes. For example4079.83 5432.25 75.1 TOTALHowever, this has no meaning as it evenly weights every test.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。