Repository navigation
Expand file tree
/
Copy pathtest_builder.py
More file actions
86 lines (75 loc) · 2.39 KB
/
Copy pathtest_builder.py
File metadata and controls
86 lines (75 loc) · 2.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#####################################################################################
#
# Copyright (c) Microsoft Corporation. All rights reserved.
#
# This source code is subject to terms and conditions of the Apache License, Version 2.0. A
# copy of the license can be found in the License.html file at the root of this distribution. If
# you cannot locate the Apache License, Version 2.0, please send an email to
# [email protected]. By using this source code in any fashion, you are agreeing to be bound
# by the terms of the Apache License, Version 2.0.
#
# You must not remove this notice, or any other, from this software.
#
#
#####################################################################################
import sys
if sys.platform=="win32":
import os
newline = os.linesep
else:
newline = System.Environment.NewLine
pats = [0L, 1L, 42L, 0x7fffffffL, 0x80000000L, 0xabcdef01L, 0xffffffffL]
nums = []
for p0 in pats:
for p1 in pats:
#for p2 in pats:
n = p0+(p1<<32) #+(p2<<64)
nums.append(n)
nums.append(-n)
bignums = []
for p0 in pats:
for p1 in pats:
for p2 in pats:
n = p0+(p1<<32)+(p2<<64)
bignums.append(n)
bignums.append(-n)
#!!! should add 2 or 3 larger numbers to check for any issues there
print len(bignums), len(bignums)**2
import operator, time
ops = [
('+', operator.add),
('-', operator.sub),
('*', operator.mul),
('/', operator.div),
('%', operator.mod),
('&', operator.and_),
('|', operator.or_),
('^', operator.xor),
]
def buildit(name, nums):
print 'expected', (len(nums)**2)*len(ops)
t0 = time.clock()
for sym, op in ops:
if not name.startswith('time'):
fp = open('%s_%s.txt' % (name, op.__name__), 'w')
else:
fp = None
print 'computing', sym
for x in nums:
for y in nums:
try:
z = op(x, y)
if name == 'time1' or fp:
sz = str(z)
if fp:
fp.write(sz)
fp.write(newline)
except:
if fp:
fp.write('ERROR' + newline)
if fp: fp.close()
t1 = time.clock()
print 'time', (t1-t0)
buildit('time1', bignums)
buildit('short', nums)
buildit('full', bignums)