我想测试 Python 中算法(潜在狄利克雷分配)的两个实现的可扩展性 - gensim 和 lda。大多数谷歌搜索结果都在谈论网站和基于网络的应用程序的可扩展性。
如何测试简单算法(不是整个系统)的可扩展性?应牢记哪些最佳做法?
最佳答案
看下面的python代码,
import datetime;
s=0
VALUES = [1,10,100,1000,2000,8000]
for VALUE in VALUES:
timebefore = datetime.datetime.now()
#Algorithm starts
for i in range(VALUE):
for j in range(VALUE):
s+=i*j
#Algorithm ends
timeafter = datetime.datetime.now()
print('time taken for parameter:'+str(VALUE)+" is " + str(timeafter - timebefore))
上面程序的输出是
time taken for parameter:1 is 0:00:00
time taken for parameter:10 is 0:00:00
time taken for parameter:100 is 0:00:00
time taken for parameter:1000 is 0:00:00.327280
time taken for parameter:2000 is 0:00:01.285746
time taken for parameter:8000 is 0:00:21.250825
当 n 从 1000 变为 2000(乘以因子 2)时,所用时间大约增加了 4 倍 (1.285746/0.327280)
当 n 从 2000 变为 8000(系数 4)时,所用时间大约增加了 16 倍 (21.250825/1.285746)
所以对于输入参数的n个变化,所花费的时间变化了n^2,因此算法的复杂度可以推导出为O(n^2)
在您的情况下,用您自己的算法替换算法并运行不同的参数以查看时间复杂度。
关于python - 简单算法的可扩展性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30633871/