Author: bugman Date: Mon Jun 16 16:03:55 2014 New Revision: 23976 URL: http://svn.gna.org/viewcvs/relax?rev=23976&view=rev Log: Added a timeit script and log file for different ways of checking a binary numpy array. Added: branches/frame_order_cleanup/test_suite/shared_data/frame_order/timings/flag_array.log branches/frame_order_cleanup/test_suite/shared_data/frame_order/timings/flag_array.py - copied, changed from r23956, branches/frame_order_cleanup/test_suite/shared_data/frame_order/timings/tensor_projections.py Added: branches/frame_order_cleanup/test_suite/shared_data/frame_order/timings/flag_array.log URL: http://svn.gna.org/viewcvs/relax/branches/frame_order_cleanup/test_suite/shared_data/frame_order/timings/flag_array.log?rev=23976&view=auto ============================================================================== --- branches/frame_order_cleanup/test_suite/shared_data/frame_order/timings/flag_array.log (added) +++ branches/frame_order_cleanup/test_suite/shared_data/frame_order/timings/flag_array.log Mon Jun 16 16:03:55 2014 @@ -0,0 +1,28 @@ + +1st check - 0 in flags. +Zeros present: True +Timing (s): 2.36345410347 + +2nd check - min(flags). +Zeros present: True +Timing (s): 1.0689060688 + +3rd check - flags.min(). +Zeros present: True +Timing (s): 5.45578408241 + +4th check - sum(flags). +Zeros present: True +Timing (s): 2.30188107491 + +5th check - for loop. +Zeros present: True +Timing (s): 0.846194982529 + +6th check - not flags.all(). +Zeros present: True +Timing (s): 4.40921497345 + +7th check - pre-convert to single flag. +Zeros present: True +Timing (s): 0.0773220062256 Copied: branches/frame_order_cleanup/test_suite/shared_data/frame_order/timings/flag_array.py (from r23956, branches/frame_order_cleanup/test_suite/shared_data/frame_order/timings/tensor_projections.py) URL: http://svn.gna.org/viewcvs/relax/branches/frame_order_cleanup/test_suite/shared_data/frame_order/timings/flag_array.py?p2=branches/frame_order_cleanup/test_suite/shared_data/frame_order/timings/flag_array.py&p1=branches/frame_order_cleanup/test_suite/shared_data/frame_order/timings/tensor_projections.py&r1=23956&r2=23976&rev=23976&view=diff ============================================================================== --- branches/frame_order_cleanup/test_suite/shared_data/frame_order/timings/tensor_projections.py (original) +++ branches/frame_order_cleanup/test_suite/shared_data/frame_order/timings/flag_array.py Mon Jun 16 16:03:55 2014 @@ -1,127 +1,112 @@ # Python module imports. -from numpy import * -from numpy.linalg import norm +from numpy import array from os import pardir, sep import sys -from time import sleep from timeit import timeit # Modify the system path. sys.path.append(pardir+sep+pardir+sep+pardir+sep+pardir+sep) -# relax module imports. -from lib.geometry.rotations import euler_to_R_zyz + +def check1(flags, N=1, verb=True): + for i in range(N): + flag = False + if 0 in flags: + flag = True + if verb: + print("\n1st check - 0 in flags.") + print("Zeros present: %s" % flag) -def proj1(vect, A, N=1, verb=True): - d = zeros(len(vect), float64) +def check2(flags, N=1, verb=True): for i in range(N): - for j in xrange(len(vect)): - d[j] = dot(vect[j], dot(A, vect[j])) + flag = False + if min(flags) == 0: + flag = True if verb: - print("\n1st projection - element by element r[i].A.r[i].") - print("Proj: %s" % d[:2]) + print("\n2nd check - min(flags).") + print("Zeros present: %s" % flag) -def proj2(vect, A, N=1, verb=True): +def check3(flags, N=1, verb=True): for i in range(N): - d = diagonal(tensordot(vect, tensordot(A, transpose(vect), axes=1), axes=1)) + flag = False + if flags.min() == 0: + flag = True if verb: - print("\n2nd projection - diag of double tensordot.") - print("Proj: %s" % d[:2]) + print("\n3rd check - flags.min().") + print("Zeros present: %s" % flag) -def proj3(vect, A, N=1, verb=True): +def check4(flags, N=1, verb=True): for i in range(N): - d = diagonal(tensordot(tensordot(A, vect, axes=([0],[1])), vect, axes=([0],[1]))) + flag = False + if sum(flags) > 0: + flag = True if verb: - print("\n3rd projection - diag of double tensordot, no transpose.") - print("Proj: %s" % d[:2]) + print("\n4th check - sum(flags).") + print("Zeros present: %s" % flag) -def proj4(vect, A, N=1, verb=True): - d = zeros(len(vect), float64) +def check5(flags, N=1, verb=True): for i in range(N): - a = tensordot(A, vect, axes=([0],[1])) - for j in range(len(vect)): - d[j] = dot(vect[j], a[:,j]) + flag = False + for i in xrange(len(flags)): + if flags[i] == 0: + flag = True + break if verb: - print("\n4th projection - mixed tensordot() and per-vector dot().") - print("Proj: %s" % d[:2]) + print("\n5th check - for loop.") + print("Zeros present: %s" % flag) -def proj5(vect, A, N=1, verb=True): - d = zeros(len(vect), float64) +def check6(flags, N=1, verb=True): for i in range(N): - vect2 = vect**2 - double_vect = 2.0 * vect - for j in xrange(len(vect)): - d[j] = vect2[j][0]*A[0, 0] + vect2[j][1]*A[1, 1] + vect2[j][2]*(A[2, 2]) + double_vect[j][0]*vect[j][1]*A[0, 1] + double_vect[j][0]*vect[j][2]*A[0, 2] + double_vect[j][1]*vect[j][2]*A[1, 2] + flag = False + if not flags.all(): + flag = True if verb: - print("\n5th projection - expansion and sum.") - print("Proj: %s" % d[:2]) + print("\n6th check - not flags.all().") + print("Zeros present: %s" % flag) -def proj6(vect, A, N=1, verb=True): - d = zeros(len(vect), float64) +def check7(flags, N=1, verb=True): + pre = False + if min(flags) == 0: + pre = True for i in range(N): - d = vect[:,0]**2*A[0, 0] + vect[:,1]**2*A[1, 1] + vect[:,2]**2*(A[2, 2]) + 2.0*vect[:,0]*vect[:,1]*A[0, 1] + 2.0*vect[:,0]*vect[:,2]*A[0, 2] + 2.0*vect[:,1]*vect[:,2]*A[1, 2] + flag = False + if pre: + flag = True if verb: - print("\n6th projection - expansion.") - print("Proj: %s" % d[:2]) + print("\n7th check - pre-convert to single flag.") + print("Zeros present: %s" % flag) -def proj7(vect, A, N=1, verb=True): - d = zeros(len(vect), float64) - for i in range(N): - vect2 = vect**2 - double_vect = 2.0 * vect - d = vect2[:,0]*A[0, 0] + vect2[:,1]*A[1, 1] + vect2[:,2]*(A[2, 2]) + double_vect[:,0]*vect[:,1]*A[0, 1] + double_vect[:,0]*vect[:,2]*A[0, 2] + double_vect[:,1]*vect[:,2]*A[1, 2] - if verb: - print("\n7th projection - expansion with pre-calculation.") - print("Proj: %s" % d[:2]) +# Flag array. +flags = array([0, 1, 1, 0, 1]) - -# Some 200 vectors. -vect = array([[1, 2, 3], [2, 2, 2]], float64) -vect = tile(vect, (100, 1)) -if __name__ == '__main__': - print("Original vectors:\n%s\nShape: %s" % (vect[:2], vect.shape)) - -# Init the alignment tensor. -A = zeros((3, 3), float64) -A_5D = [1.42219822168827662867e-04, -1.44543001566521341940e-04, -7.07796211648713973798e-04, -6.01619494082773244303e-04, 2.02008007072950861996e-04] -A[0, 0] = A_5D[0] -A[1, 1] = A_5D[1] -A[2, 2] = -A_5D[0] -A_5D[1] -A[0, 1] = A[1, 0] = A_5D[2] -A[0, 2] = A[2, 0] = A_5D[3] -A[1, 2] = A[2, 1] = A_5D[4] -A *= 1e4 -if __name__ == '__main__': - print("\nTensor:\n%s\n" % A) - -# Projections. -N = 100 +# Checks. +N = 10000 M = 100 if __name__ == '__main__': - proj1(vect=vect, A=A, N=1, verb=True) - print("Timing (s): %s" % timeit("proj1(vect=vect, A=A, N=N, verb=False)", setup="from tensor_projections import proj1, vect, A, N", number=M)) + check1(flags=flags, N=1, verb=True) + print("Timing (s): %s" % timeit("check1(flags=flags, N=N, verb=False)", setup="from flag_array import check1, flags, N", number=M)) - proj2(vect=vect, A=A, N=1, verb=True) - print("Timing (s): %s" % timeit("proj2(vect=vect, A=A, N=N, verb=False)", setup="from tensor_projections import proj2, vect, A, N", number=M)) + check2(flags=flags, N=1, verb=True) + print("Timing (s): %s" % timeit("check2(flags=flags, N=N, verb=False)", setup="from flag_array import check2, flags, N", number=M)) - proj3(vect=vect, A=A, N=1, verb=True) - print("Timing (s): %s" % timeit("proj3(vect=vect, A=A, N=N, verb=False)", setup="from tensor_projections import proj3, vect, A, N", number=M)) + check3(flags=flags, N=1, verb=True) + print("Timing (s): %s" % timeit("check3(flags=flags, N=N, verb=False)", setup="from flag_array import check3, flags, N", number=M)) - proj4(vect=vect, A=A, N=1, verb=True) - print("Timing (s): %s" % timeit("proj4(vect=vect, A=A, N=N, verb=False)", setup="from tensor_projections import proj4, vect, A, N", number=M)) + check4(flags=flags, N=1, verb=True) + print("Timing (s): %s" % timeit("check4(flags=flags, N=N, verb=False)", setup="from flag_array import check4, flags, N", number=M)) - proj5(vect=vect, A=A, N=1, verb=True) - print("Timing (s): %s" % timeit("proj5(vect=vect, A=A, N=N, verb=False)", setup="from tensor_projections import proj5, vect, A, N", number=M)) + check5(flags=flags, N=1, verb=True) + print("Timing (s): %s" % timeit("check5(flags=flags, N=N, verb=False)", setup="from flag_array import check5, flags, N", number=M)) - proj6(vect=vect, A=A, N=1, verb=True) - print("Timing (s): %s" % timeit("proj6(vect=vect, A=A, N=N, verb=False)", setup="from tensor_projections import proj6, vect, A, N", number=M)) + check6(flags=flags, N=1, verb=True) + print("Timing (s): %s" % timeit("check6(flags=flags, N=N, verb=False)", setup="from flag_array import check6, flags, N", number=M)) - proj7(vect=vect, A=A, N=1, verb=True) - print("Timing (s): %s" % timeit("proj7(vect=vect, A=A, N=N, verb=False)", setup="from tensor_projections import proj7, vect, A, N", number=M)) + check7(flags=flags, N=1, verb=True) + print("Timing (s): %s" % timeit("check7(flags=flags, N=N, verb=False)", setup="from flag_array import check7, flags, N", number=M))