python - 简单算法的可扩展性

标签 python algorithm scalability lda

我想测试 Python 中算法(潜在狄利克雷分配)的两个实现的可扩展性 - gensimlda。大多数谷歌搜索结果都在谈论网站和基于网络的应用程序的可扩展性。

如何测试简单算法(不是整个系统)的可扩展性?应牢记哪些最佳做法?

最佳答案

看下面的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/

相关文章:

javascript - 你如何构建 node.js 动态 Web 服务器? (升级服务器恕不另行通知)

python - 如何避免 youtube-dl 中的 No-SSL-CERTIFICATE 错误?

python - settings.pyc 和 __init__.pyc 文件是如何进入我的 Django 应用程序文件夹的?

algorithm - 模式识别算法

c++ - 循环遍历变量

architecture - 对项目的架构做出决定;你的决策过程是怎样的?

ios - NSManagedObjectContext 保存的性能急剧下降

python - <span> 内没有类的 BS4 文本

python - 如何在Python中将结构体传递给Linux设备节点?

algorithm - 你能以 O(n) 的摊销复杂度对 n 个整数进行排序吗?