Skip to content
This repository was archived by the owner on May 23, 2023. It is now read-only.

Commit 2d62ac7

Browse files
vubvub
authored andcommitted
Added stress test
1 parent 03dbe91 commit 2d62ac7

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed

ethereum/tests/stress_test.py

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
from ethereum import tester as t
2+
from ethereum.slogging import set_level
3+
import time
4+
5+
6+
serpent_code = """
7+
def sqrt(n):
8+
i = 0
9+
while i * i < n:
10+
i += 1
11+
return i
12+
13+
def mul(a:arr, b:arr):
14+
c = array(len(a))
15+
sz = self.sqrt(len(a))
16+
i = 0
17+
while i < sz:
18+
j = 0
19+
while j < sz:
20+
k = 0
21+
while k < sz:
22+
c[i * sz + j] += a[i * sz + k] * b[k * sz + j]
23+
k += 1
24+
j += 1
25+
i += 1
26+
return(c:arr)
27+
28+
def exp(a:arr, i):
29+
if i == 1:
30+
return(a:arr)
31+
elif i % 2 == 0:
32+
m = self.exp(a, i / 2, outitems=len(a))
33+
return(self.mul(m, m, outitems=len(a)):arr)
34+
elif i % 2 == 1:
35+
m = self.exp(a, i / 2, outitems=len(a))
36+
return(self.mul(self.mul(m, m, outitems=len(a)), a, outitems=len(a)):arr)
37+
"""
38+
39+
40+
def test_mul():
41+
set_level(None, 'info')
42+
s = t.state()
43+
c = s.abi_contract(serpent_code)
44+
assert c.mul([1, 0, 0, 1], [2, 3, 4, 5]) == [2, 3, 4, 5]
45+
assert c.exp([0, 1, -1, 0], 24) == [1, 0, 0, 1]
46+
assert c.exp([0, -1, 1, 0], 39) == [0, 1, -1, 0]
47+
t.gas_limit = 100000000
48+
x = time.time()
49+
c.exp([i for i in range(81)], 31415)
50+
print('Exponentiation done in: %f' % (time.time() - x))
51+
52+
if __name__ == '__main__':
53+
test_mul()

0 commit comments

Comments
 (0)