Skip to content

Instantly share code, notes, and snippets.

@michaelHL
Created August 29, 2017 02:37
Show Gist options
  • Select an option

  • Save michaelHL/4b3ab84a56be11cf711b14b106357de5 to your computer and use it in GitHub Desktop.

Select an option

Save michaelHL/4b3ab84a56be11cf711b14b106357de5 to your computer and use it in GitHub Desktop.
python - generator vs list
# -*- coding: utf-8 -*- | N Function Runtime
| -----------------------------------------
import time | 1e+00 createGenerator 0.00000000 s
| 1e+00 createGeneratorExp 0.00000000 s
def createGenerator(N): | 1e+00 createList 0.00000000 s
for i in range(N): | -----------------------------------------
yield i * i | 1e+01 createGenerator 0.00000000 s
| 1e+01 createGeneratorExp 0.00000000 s
def createGeneratorExp(N): | 1e+01 createList 0.00000000 s
return (i * i for i in range(N)) | -----------------------------------------
| 1e+02 createGenerator 0.00000000 s
def createList(N): | 1e+02 createGeneratorExp 0.00000000 s
return [i * i for i in range(N)] | 1e+02 createList 0.00000000 s
| -----------------------------------------
def test(fun, N): | 1e+03 createGenerator 0.00000000 s
start = time.time() | 1e+03 createGeneratorExp 0.00000000 s
gen = fun(N) | 1e+03 createList 0.00000000 s
for i in gen: | -----------------------------------------
pass | 1e+04 createGenerator 0.00000000 s
end = time.time() | 1e+04 createGeneratorExp 0.01560640 s
print('%-7.0e%-20s%- 2.8f s' % (N, fun.__name__, end - start)) | 1e+04 createList 0.00000000 s
| -----------------------------------------
print('%-7s%-20s %s' % ("N", "Function", "Runtime")) | 1e+05 createGenerator 0.00000000 s
print('-----------------------------------------') | 1e+05 createGeneratorExp 0.01562309 s
for Ni in range(9): | 1e+05 createList 0.01562333 s
N = 10 ** Ni | -----------------------------------------
test(createGenerator, N) | 1e+06 createGenerator 0.09379315 s
test(createGeneratorExp, N) | 1e+06 createGeneratorExp 0.09372592 s
test(createList, N) | 1e+06 createList 0.11374307 s
print('-----------------------------------------') | -----------------------------------------
| 1e+07 createGenerator 0.92200398 s
| 1e+07 createGeneratorExp 1.01695776 s
| 1e+07 createList 1.02991676 s
| -----------------------------------------
| 1e+08 createGenerator 9.18688107 s
| 1e+08 createGeneratorExp 9.20074868 s
| 1e+08 createList 11.08157372 s
| -----------------------------------------
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment