Created
August 8, 2011 07:14
-
-
Save yanolab/1131343 to your computer and use it in GitHub Desktop.
benchmark of builtin filter function
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- coding: utf-8 -*- | |
from timeit import Timer | |
import random | |
import string | |
import sys | |
def redef_builtin_filter(pred, iterable): | |
"""redefined builtin filter function""" | |
ret = [x for x in iterable if pred(x)] | |
if isinstance(iterable, str) or isinstance(iterable, unicode): | |
return ''.join(ret) | |
elif isinstance(iterable, tuple): | |
return tuple(ret) | |
else: | |
return ret | |
setup=""" | |
from __main__ import redef_builtin_filter, list_10percent_true, tuple_10percent_true,\\ | |
ascii_str, unicode_str, select_true, select_under_ch_i, select_under_uni_ha | |
""" | |
itemsize = 100 | |
list_10percent_true = [random.randint(0, itemsize) < itemsize/10 for x in range(itemsize)] | |
tuple_10percent_true = tuple([random.randint(0, itemsize) < itemsize/10 for x in range(itemsize)]) | |
ascii_str = ''.join(random.choice(string.ascii_letters) for x in range(itemsize)) | |
unicode_str = u'あいうえおかきくけこさしすせそたちつてとなにぬねの' | |
select_true = lambda x: x==True | |
select_under_ch_i = lambda x: ord(x) < ord('i') | |
select_under_uni_ha = lambda x: ord(x) < ord(u'は') | |
assert redef_builtin_filter(select_true, list_10percent_true) == filter(select_true, list_10percent_true) | |
assert redef_builtin_filter(select_true, tuple_10percent_true) == filter(select_true, tuple_10percent_true) | |
assert redef_builtin_filter(select_under_ch_i, ascii_str) == filter(select_under_ch_i, ascii_str) | |
assert redef_builtin_filter(select_under_uni_ha, unicode_str) == filter(select_under_uni_ha, unicode_str) | |
print 'python version : %s on %s' % (sys.version, sys.platform) | |
print '' | |
print 'list_10percent_true:' | |
print ' redef_builtin_filter ->', Timer(stmt='redef_builtin_filter(select_true, list_10percent_true)', setup=setup).timeit() | |
print ' builtin filter ->', Timer(stmt='filter(select_true, list_10percent_true)', setup=setup).timeit() | |
print '' | |
print 'tuple_10percent_true:' | |
print ' redef_builtin_filter ->', Timer(stmt='redef_builtin_filter(select_true, tuple_10percent_true)', setup=setup).timeit() | |
print ' builtin filter ->', Timer(stmt='filter(select_true, tuple_10percent_true)', setup=setup).timeit() | |
print '' | |
print 'ascii_str:' | |
print ' redef_builtin_filter ->', Timer(stmt='redef_builtin_filter(select_under_ch_i, ascii_str)', setup=setup).timeit() | |
print ' builtin filter ->', Timer(stmt='filter(select_under_ch_i, ascii_str)', setup=setup).timeit() | |
print '' | |
print 'unicode_str:' | |
print ' redef_builtin_filter ->', Timer(stmt='redef_builtin_filter(select_under_uni_ha, unicode_str)', setup=setup).timeit() | |
print ' builtin filter ->', Timer(stmt='filter(select_under_uni_ha, unicode_str)', setup=setup).timeit() | |
print '' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
python version : 2.7.1 (4d824e4fcf57+, Aug 08 2011, 04:03:11) | |
[PyPy 1.6.0-dev1 with GCC 4.5.2] on linux2 | |
list_10percent_true: | |
redef_builtin_filter -> 0.486375808716 | |
builtin filter -> 15.1048140526 | |
tuple_10percent_true: | |
redef_builtin_filter -> 1.58475995064 | |
builtin filter -> 21.8717570305 | |
ascii_str: | |
redef_builtin_filter -> 6.38133001328 | |
builtin filter -> 25.1767168045 | |
unicode_str: | |
redef_builtin_filter -> 1.97318696976 | |
builtin filter -> 6.94378709793 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-----/proc/meminfo | |
MemTotal: 8264940 kB | |
MemFree: 6293120 kB | |
Buffers: 113312 kB | |
Cached: 1364704 kB | |
SwapCached: 0 kB | |
Active: 1423476 kB | |
Inactive: 443656 kB | |
Active(anon): 389872 kB | |
Inactive(anon): 7528 kB | |
Active(file): 1033604 kB | |
Inactive(file): 436128 kB | |
Unevictable: 0 kB | |
Mlocked: 0 kB | |
HighTotal: 7475144 kB | |
HighFree: 5708268 kB | |
LowTotal: 789796 kB | |
LowFree: 584852 kB | |
SwapTotal: 4191228 kB | |
SwapFree: 4191228 kB | |
Dirty: 44 kB | |
Writeback: 0 kB | |
AnonPages: 389048 kB | |
Mapped: 121164 kB | |
Shmem: 8288 kB | |
Slab: 79180 kB | |
SReclaimable: 66876 kB | |
SUnreclaim: 12304 kB | |
KernelStack: 2784 kB | |
PageTables: 7656 kB | |
NFS_Unstable: 0 kB | |
Bounce: 0 kB | |
WritebackTmp: 0 kB | |
CommitLimit: 8323696 kB | |
Committed_AS: 1920288 kB | |
VmallocTotal: 122880 kB | |
VmallocUsed: 72108 kB | |
VmallocChunk: 47932 kB | |
HardwareCorrupted: 0 kB | |
HugePages_Total: 0 | |
HugePages_Free: 0 | |
HugePages_Rsvd: 0 | |
HugePages_Surp: 0 | |
Hugepagesize: 2048 kB | |
DirectMap4k: 14328 kB | |
DirectMap2M: 899072 kB | |
-----/proc/cpuinfo | |
processor : 0 | |
vendor_id : GenuineIntel | |
cpu family : 6 | |
model : 42 | |
model name : Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz | |
stepping : 7 | |
cpu MHz : 3274.067 | |
cache size : 6144 KB | |
physical id : 0 | |
siblings : 4 | |
core id : 0 | |
cpu cores : 4 | |
apicid : 0 | |
initial apicid : 0 | |
fdiv_bug : no | |
hlt_bug : no | |
f00f_bug : no | |
coma_bug : no | |
fpu : yes | |
fpu_exception : yes | |
cpuid level : 5 | |
wp : yes | |
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx lm constant_tsc pni ssse3 lahf_lm | |
bogomips : 6548.13 | |
clflush size : 64 | |
cache_alignment : 64 | |
address sizes : 36 bits physical, 48 bits virtual | |
power management: | |
processor : 1 | |
vendor_id : GenuineIntel | |
cpu family : 6 | |
model : 42 | |
model name : Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz | |
stepping : 7 | |
cpu MHz : 3274.067 | |
cache size : 6144 KB | |
physical id : 0 | |
siblings : 4 | |
core id : 1 | |
cpu cores : 4 | |
apicid : 1 | |
initial apicid : 1 | |
fdiv_bug : no | |
hlt_bug : no | |
f00f_bug : no | |
coma_bug : no | |
fpu : yes | |
fpu_exception : yes | |
cpuid level : 5 | |
wp : yes | |
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx lm constant_tsc pni ssse3 lahf_lm |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment