|
paul@50
|
1 |
#!/usr/bin/env python |
|
paul@6
|
2 |
|
|
paul@50
|
3 |
import sys |
|
paul@41
|
4 |
|
|
paul@50
|
5 |
sys.path.append("/home/paul/g/fetched/corepy-1.0") |
|
paul@50
|
6 |
|
|
paul@50
|
7 |
import time |
|
paul@50
|
8 |
import array |
|
paul@50
|
9 |
|
|
paul@53
|
10 |
import corepy.arch.x86.platform as env |
|
paul@53
|
11 |
import corepy.arch.x86.isa as x86 |
|
paul@53
|
12 |
import corepy.arch.x86.types.registers as r |
|
paul@53
|
13 |
from corepy.arch.x86.lib.memory import MemRef |
|
paul@50
|
14 |
from corepy.lib.extarray import extarray |
|
paul@50
|
15 |
|
|
paul@50
|
16 |
def timecmd(name, cmd, r): |
|
paul@50
|
17 |
c = 0 |
|
paul@50
|
18 |
total = 0 |
|
paul@50
|
19 |
while total < 2: |
|
paul@50
|
20 |
t = time.time() |
|
paul@50
|
21 |
cmd() |
|
paul@50
|
22 |
d = time.time() |
|
paul@50
|
23 |
total += d - t |
|
paul@50
|
24 |
c += 1 |
|
paul@57
|
25 |
print "%s %5.1f" % (name, total*(2.4E9)/(r*c)) |
|
paul@53
|
26 |
|
|
paul@50
|
27 |
reps = (1<<6) |
|
paul@53
|
28 |
|
|
paul@53
|
29 |
code = env.InstructionStream() |
|
paul@53
|
30 |
code.add(x86.nop()) |
|
paul@53
|
31 |
def callasm(): |
|
paul@53
|
32 |
for i in range(reps): |
|
paul@53
|
33 |
params = env.ExecParams() |
|
paul@53
|
34 |
env.Processor().execute(code) |
|
paul@53
|
35 |
timecmd("callasm", callasm, reps) |
|
paul@53
|
36 |
|
|
paul@50
|
37 |
datasize = (1<<14) |
|
paul@41
|
38 |
|
|
paul@50
|
39 |
def timeaccess(name, items, mask, store): |
|
paul@50
|
40 |
def timereps(): |
|
paul@51
|
41 |
for i in xrange(reps): |
|
paul@51
|
42 |
for j in xrange(items): |
|
paul@50
|
43 |
store[j] ^= mask |
|
paul@50
|
44 |
timecmd(name, timereps, datasize*reps) |
|
paul@3
|
45 |
|
|
paul@51
|
46 |
timeaccess("snative", datasize>>2, 3, [0] * (datasize >> 2)) |
|
paul@50
|
47 |
timeaccess("native", datasize>>2, 0xffffffff, [0] * (datasize >> 2)) |
|
paul@51
|
48 |
timeaccess("sarray", datasize>>2, 3, array.array('L', [0] * (datasize >> 2))) |
|
paul@50
|
49 |
timeaccess("array", datasize>>2, 0xfffffff, array.array('L', [0] * (datasize >> 2))) |
|
paul@51
|
50 |
timeaccess("sulongs", datasize>>2, 3, extarray('L', datasize >> 2)) |
|
paul@50
|
51 |
timeaccess("ulongs", datasize>>2, 0xffffffff, extarray('L', datasize >> 2)) |
|
paul@50
|
52 |
timeaccess("ushorts", datasize>>1, 0xffff, extarray('H', datasize >> 1)) |
|
paul@5
|
53 |
|