Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

性能测试 #26

Open
lgxbslgx opened this issue Apr 16, 2017 · 3 comments
Open

性能测试 #26

lgxbslgx opened this issue Apr 16, 2017 · 3 comments

Comments

@lgxbslgx
Copy link
Member

lgxbslgx commented Apr 16, 2017

性能测试方案

自变量

文件数、文件类型

文件数量的递增顺序

10、20、30、40(这个可能区别不明显)
10、100、1000...

需要检测的性能指标

运行时间、内存、CPU占用率

需要进行性能测试的地方

序列化与反序列化
incrementally_pull()中147-171行(即计算diff、add_in_other、delete_in_other)
incrementally_push()中208-236行(即计算diff、add_in_local、delete_in_local)
synchash.fill_sync_hash_list(sync_hash_list)
程序整体(一次incrementally_pull或一次incrementally_push())

具体执行方案

### 运行时间(可二选一)
    1.使用Unix系统中的time命令
    2.使用cProfile模块

## 内存
    使用memory_profiler模块

## cpu占用率
    使用line_profiler模块

## 可视化工具(可以在前面的测完后用于测程序整体)
    gprof2dot
    vprof

注意事项

    所有的性能测试在sync/profile下进行(可以在该目录专门新建一个目录来写测试脚本)
    针对每一个需要测试的地方以及一个需要测试的指标来写一个测试脚本(例如针对序列化的代码进行运行时间测试)

目前需要先做的事情

学会使用:
使用Unix系统中的time命令
使用cProfile模块
使用memory_profiler模块
使用line_profiler模块
gprof2dot
vprof

参考资料

http://www.ctolib.com/topics-106241.html
http://python.jobbole.com/80754/

运行时间测试(cProfile模块)

http://www.cnblogs.com/btchenguang/archive/2012/02/03/2337112.html

@lgxbslgx
Copy link
Member Author

lgxbslgx commented Apr 19, 2017

几个问题:
1、每次运行时间都不同,需要怎么处理? 多测几次取其平均值?5次可以吗?
2、pull或push时,要涉及增删改查的操作,增、删的时候会改变文件数,要不就约定初始化的时候的数量为记录的数量。就是最开始时是10个文件,不管之后测试的时候增删了多少,都是算10个文件。
3、测试时的增删改操作要不要统一?要不测时间和测内存、测cpu利用率的操作可能不一样。
4、我觉得那个线性关系可以去掉(10、20、30那个),因为比如10个的时候,再加上要测试的几个文件,就差不多20个了,可比性不强。我们可以直接测10、100、1000的?
5、测试时要用U盘来实际测试吗?U盘的速度和磁盘还是有区别的
6、不同电脑测试的数据不同

@lgxbslgx
Copy link
Member Author

lgxbslgx commented Apr 19, 2017

讨论结果:
1、每组数据测10次,取平均值
2、算数量级就可以了
3、测试用例要统一,等国雄写
4、去掉10、20、30.。。变成只有数量级递增的情况
5、用U盘比较好,直接用U盘吧
6、用同一台电脑测

@lgxbslgx
Copy link
Member Author

lgxbslgx commented Apr 19, 2017

测试用例:

1、在本地local_sync/test-xx里新增文件和文件夹,新增的目录结构为:
local_sync/test-xx/update_local_test_1.txt
local_sync/test-xx/delete_local_test_1.txt
local_sync/test-xx/test2/update_local_test_2.txt
local_sync/test-xx/test2/delete_local_test_2.txt
local_sync/test-xx/test2/test3/update_local_test_3.txt
local_sync/test-xx/test2/test3/delete_local_test_3.txt

2、初始化本地local_sync/test-xx和U盘udisk_sync/test-xx

3、本地全量push,远程全量pull

4、本地local_sync/test-xx里新增下列文件
local_sync/test-xx/add_local_test_1.txt
local_sync/test-xx/test2/add_local_test_2.txt
local_sync/test-xx/test2/test3/add_local_test_3.txt

5、本地local_sync/test-xx里修改下列文件内容
local_sync/test-xx/update_local_test_1.txt
local_sync/test-xx/test2/update_local_test_2.txt
local_sync/test-xx/test2/test3/update_local_test_3.txt

6、本地local_sync/test-xx里删除下列文件
local_sync/test-xx/delete_local_test_1.txt
local_sync/test-xx/test2/delete_local_test_2.txt
local_sync/test-xx/test2/test3/delete_local_test_3.txt

7、远程remote_sync/test-xx里新增下列文件
remote_sync/test-xx/add_remote_test_1.txt
remote_sync/test-xx/test2/add_remote_test_2.txt
remote_sync/test-xx/test2/test3/add_remote_test_3.txt

8、远程remote_sync/test-xx里修改下列文件内容
remote_sync/test-xx/update_local_test_1.txt
remote_sync/test-xx/test2/update_local_test_2.txt
remote_sync/test-xx/test2/test3/update_local_test_3.txt

9、远程remote_sync/test-xx里删除下列文件
remote_sync/test-xx/delete_local_test_1.txt
remote_sync/test-xx/test2/delete_local_test_2.txt
remote_sync/test-xx/test2/test3/delete_local_test_3.txt

10、本地增量push、远程增量pull

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant