質問編集履歴

1

修正

2021/06/01 05:47

投稿

kaeruuuun
kaeruuuun

スコア19

test CHANGED
File without changes
test CHANGED
@@ -53,3 +53,61 @@
53
53
  このようなコードを作成して,n=5000から100000まで5000ずつで変化させた時のn=5000の時にxRとnRを計算してその時の10回の平均を結果としてlap1_timeとlap2_timeで答えとして出力し,その後n=10000について同様の処理を行うというプログラムを書いたつもりでした.
54
54
 
55
55
  n=100000だけを10回の平均を取るなどせず求めると大体lap2は12秒かかるのに対してこのプログラムで出てきた結果は3秒で明らかにプログラムの動作自体が遅いのでこのような結果になるはずがないのですが,このプログラムが間違っているのでしょうか.lap1の方は大体単体と同じような結果が得られています.
56
+
57
+ ```python
58
+
59
+
60
+
61
+ import time
62
+
63
+ import numpy as np
64
+
65
+
66
+
67
+ NA ='ACGT'
68
+
69
+ n = 100000
70
+
71
+ s = ''
72
+
73
+ N=10
74
+
75
+ myBytes = {}
76
+
77
+ st0_time = time.time()
78
+
79
+ for n in range(5000,100000,5000):
80
+
81
+ myBytes[n] = (s.join([random.choice(DNA) for i in range(n)])).encode()
82
+
83
+ lap1_time =0
84
+
85
+ lap2_time =0
86
+
87
+ for j in range(N):
88
+
89
+ st1_time = time.time()
90
+
91
+ xR = makeSuffixArrayByInducedSorting(myBytes[n],256,0,False)
92
+
93
+ et1_time = time.time()
94
+
95
+ lap1_time = et1_time-st1_time +lap1_time
96
+
97
+ st2_time = time.time()
98
+
99
+ nR = naivelyBuildSA(myBytes[n])
100
+
101
+ et2_time = time.time()
102
+
103
+ lap2_time= et2_time-st2_time + lap2_time
104
+
105
+ ave1=lap1_time/N
106
+
107
+ ave2=lap2_time/N
108
+
109
+ print("processing time:{} {} {}".format(ave1,ave2, xR==nR))
110
+
111
+ print(time.time()-st0_time)
112
+
113
+ ```