Function lookup table.A switch statement can run a block of code when a value equals a specific string. But an object with function values can do the same thing.
In this benchmark,we test an object with function values. Each function is the value for a string key. We then invoke a method by its key.Objectfunction
Lookup table example.A lookup table of functions lets us encode branches in memory. We put a function object in each index of an array.Array
Then: We invoke functions based on an array element access. We simply call the array element as a function.
So: Instead of having one or many branches (with an if-statement chain) we can just access the function directly.
Tip: This approach can speed up applications where many possible branches—many functions—are needed.
Benchmark, lookup table.Both of these programs have the same effect. The same assignment statement is executed on the value string (which is set to "dog").
First: We create an object (dict) with 3 string keys and use an anonymous function for each value.
Second: We use a string switch and inline all the functions. Each program times its execution.
Result, notes.The switch statement on strings is slightly faster than the lookup table of anonymous functions. Calling a function has some extra instructions.
Some considerations.A lookup table may lead to clearer code, and often lookup time is not an important part of web application performance. But on a low level, the switch appears superior.
Dot Net Perls
|© 2007-2019 Sam Allen. All rights reserved. Written by Sam Allen, email@example.com.|