Always, I wander operate speed more than better,
which implement function after operated value? or operate valye in function?
example.
a = math.pi * 999
count = 0
for i in range(a):
if i % 3 == 0:
count += 1
print(count)
0 import timeit
1 import math
2
3 def test1():
4 a = int(math.pi * 999)
5 count = 0
6 for i in range(a):
7 if i % 3 == 0:
8 count += 1
9 # print(count)
10
11 def test2():
12 count = 0
13 for i in range(int(math.pi * 999)):
14 if i % 3 == 0:
15 count += 1
16
17
18
19 t1 = timeit.timeit('test1()', setup="from __main__ import test1", number=90000)
20 t2 = timeit.timeit('test2()', setup="from __main__ import test2", number=90000)
21 print(t1)
22 print(t2)
result
# 1. 19 line, timeit set parameter number=10000
1.3534549
1.4153422
# 2. 19 line, timeit set parameter number=10000
1.3587663
1.3959836
# 3. 19 line, timeit set parameter number=90000
12.3827818
13.016218799999999
I know operated value speed more than operate in function !
would using code operated varaiable.
so, I have one more question
if loop
affects speed?
test1(), test2()
functions add 3 if loop
test
add code.
11 def test1_3if():
12 a = int(math.pi * 999)
13 count = 0
14 count1 = 0
15 count2 = 0
16 for i in range(a):
17 if i % 3 == 0:
18 count += 1
19 elif i % 2 == 0:
20 count1 += 1
21 else:
22 count2 += 1
31 def test2_3if():
32 count = 0
33 count1 = 0
34 count2 = 0
35 for i in range(int(math.pi * 999)):
36 if i % 3 == 0:
37 count += 1
38 elif i % 2 == 0:
39 count1 += 1
40 else:
41 count2 += 1
42
43
44 t1 = timeit.timeit('test1()', setup="from __main__ import test1", number=90000)
45 t1_if = timeit.timeit('test1_3if()', setup="from __main__ import test1_3if", number=90000)
46 t2 = timeit.timeit('test2()', setup="from __main__ import test2", number=90000)
47 t2_if = timeit.timeit('test2_3if()', setup="from __main__ import test2_3if" ,number=90000)
48 print(t1)
49 print(t1_if)
50 print("-------")
51 print(t2)
52 print(t2_if)
result
# 1.
12.636524
23.949876600000003
-------
14.169879300000005
25.9566776
# 2.
12.7316927
24.785127900000003
-------
14.076964199999999
25.846579499999997
# 3.
12.7747608
24.0340681
-------
13.675656700000005
24.7609008
wow.. add if loop
affects slowing down
I have one more question
before, if loop
was if ~ elif ~ else
I wander if, if, if loop
# add 2 code
def test1_3ifif():
a = int(math.pi * 999)
count = 0
count1 = 0
count2 = 0
for i in range(a):
if i % 3 == 0:
count += 1
if i % 2 == 0:
count1 += 1
if i % 5 == 0:
count2 += 1
def test2_3ifif():
count = 0
count1 = 0
count2 = 0
for i in range(int(math.pi * 999)):
if i % 3 == 0:
count += 1
if i % 2 == 0:
count1 += 1
if i % 5 == 0:
count2 += 1
t1 = timeit.timeit('test1()', setup="from __main__ import test1", number=20000)
t1_if = timeit.timeit('test1_3if()', setup="from __main__ import test1_3if", number=20000)
t1_ifif = timeit.timeit('test1_3ifif()', setup="from __main__ import test1_3ifif", number=20000)
t2 = timeit.timeit('test2()', setup="from __main__ import test2", number=20000)
t2_if = timeit.timeit('test2_3if()', setup="from __main__ import test2_3if" ,number=20000)
t2_ifif = timeit.timeit('test2_3ifif()', setup="from __main__ import test2_3ifif" ,number=20000)
print(t1)
print(t1_if)
print(t1_ifif)
print("-------")
print(t2)
print(t2_if)
print(t2_ifif)
result.
# change value number=20000
# 1.
2.8760593
4.9170562
7.5904838
-------
2.772185900000002
5.317933100000001
8.210059100000002
# 2.
2.8960647
5.5680559
8.2011221
-------
2.9109318
5.439665399999999
8.5901228
# 3.
2.8950784
5.3960216999999995
8.691413499999998
-------
3.0743781000000006
5.7700678
9.032289500000001
wow ... add if loop
is similar in speed to each other.
if ~ elif ~ else
is faster than if ~ if ~ if
so funny... !!!
I will use to code operated varaiable values !
2022.08.01. first commit