Considering Performance
In this lesson, you’ll compare the performance of OrderedDict
vs dict
. To learn more about measuring performance, check out Python Timer Functions: Three Ways to Monitor Your Code.
00:01 Considering Performance. Performance is an important subject in programming. Knowing how fast an algorithm runs or how much memory it consumes are common concerns.
00:13
OrderedDict
was initially coded in Python and then written in C to maximize efficiency in methods and operations. These two implementations are currently available in the standard library.
00:24
However, the Python implementation serves as an alternative if the C implementation isn’t available for some reason. Both implementations of OrderedDict
involve using a doubly linked list to capture the order of items. Despite having linear time for some operations, the linked list implementation in OrderedDict
is highly optimized to preserve the fast times of the corresponding dictionary methods. That said, the operations in an ordered dictionary are O(1) but with a greater constant factor compared to regular dictionaries.
00:56
In general, OrderedDict
has lower performance than regular dictionaries. On-screen is an example that measures the execution time of several operations in both dictionary classes.
01:21
Here, you compute the average time that it takes to run several common operations on a given dictionary. The for
loop uses time.perf_counter()
to measure the execution time of the set of operations.
01:58 The function returns the average time, in nanoseconds, that it takes to run these operations.
02:37
Here, you can see the script being run from the command line. As you can see, operations on dict
objects are faster than operations on OrderedDict
objects.
02:53
If you’re interested in knowing other ways to time your code, then you can check out Python Timer Functions: Three Ways to Monitor Your Code. In terms of memory consumption, OrderedDict
instances have to pay a storage cost because of their ordered list of keys.
03:12 On-screen is a script that gives you an idea of this memory cost.
03:23
In this example, you use sys.getsizeof()
to measure the memory footprint in bytes of two dictionary objects.
04:01
In the output, you can see that the regular dictionary occupies less memory than the OrderedDict
counterpart. In the next section of the course, you’ll take a look at how to select the right dictionary for the job.
Become a Member to join the conversation.