Showing content from http://mail.python.org/pipermail/python-dev/attachments/20081223/4abc8b9b/attachment-0001.py below:
from time import time from random import shuffle import gc gc.disable() def print_result(action, num_items, duration): print "%s for %d items took %f seconds (%f minutes)" % (action, num_items, duration, duration / 60) def make_list(num_items): return [(x, str(x)) for x in xrange(num_items)] def make_reversed_list(num_items): seq = make_list(num_items) seq.reverse() return seq def make_shuffled_list(num_items): seq = make_list(num_items) shuffle(seq) return seq def make_dict(num_items): return dict((x, (x, str(x))) for x in xrange(num_items)) def run_test(name, factory, num_items, num_runs=3): durations = [] for i in xrange(num_runs): container = factory(num_items) start = time() del container duration = time() - start; print_result(name, num_items, duration) durations.append(duration) return min(durations) TEST_NAMES = """Dict List ReversedList ShuffledList PostShuffleDict PostShuffleList""".split() TEST_FACTORIES = [make_dict, make_list, make_reversed_list, make_shuffled_list, make_dict, make_list] NUM_ITEMS = 100000, 1000000, 2000000, 5000000, 10000000, 20000000 results = {} try: for t, f in zip(TEST_NAMES, TEST_FACTORIES): durations = [] for n in NUM_ITEMS: durations.append(run_test(t, f, n)) results[t] = durations finally: for t in TEST_NAMES: durations = results[t] baseline = durations[0] percentages = [100 * d / baseline for d in durations] print "%s: (Baseline=%f seconds)" % (t, baseline) for n, p in zip(NUM_ITEMS, percentages): print " %d=%.1f%%" % (n, p) print print "Baseline changes for Dict and List after deallocation of list in random order:" print " Dict: %.1f%%" % (100 * results["PostShuffleDict"][0] / results["Dict"][0]) print " List: %.1f%%" % (100 * results["PostShuffleList"][0] / results["List"][0])
RetroSearch is an open source project built by @garambo
| Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4