论坛首页 编程语言技术论坛

从实际工作需要与经历说说我选择PYTHON的原因(附相关源代码)

浏览 39911 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2009-05-04   最后修改:2009-05-04
我的第一篇帖子就已经说得很清楚了:

数据处理要求是这样的,分3大步:
     1.有一个等待发送状态报告文件来匹配数据的文件,里面包含得有
     移动发往联通
     wait-status.csv 中第一个字段为3
     和
     联通发往移动
     wait-status.csv 中第一个字段为4
     的所有记录
     首先读取等待状态报告文件中的数据到哈希表中去,根据第一个字段为3或者4取不同的字段作为key放入到2个不同的(发送和接收)哈希表中
    
     2.然后读取状态报告文件 status.csv 的每一行,根据第一个字段作为KEY尝试去取2个哈希表中的数据,
     取得到数据就根据是从哪个哈希表中取出的分别放到2个不同的数组(发送和接收)中去
      取不到就丢弃

     3.然后把这2个不同的数组中的每条数据转换组合后写到文件中(发送GMO,接收GMT)去就OK了

其实有什么说明比代码更清楚呢,才百把行代码,最繁琐的就是format_data中转换格式的代码了,数据格式为附件中所述

呵,提高50倍,我原来的RUBY代码在我的X60上处理100万条数据是270秒(50万是125秒左右),提高50倍,那就是5.4(2.5)秒就处理完咯(不知道在你的机子上优化前跑了多少秒,除以50应该就是优化后的结果了),不错不错,看样子是碰到奥数成员了,我要好好学习下,闭嘴也认了,到时候就封帖...
0 请登录后投票
   发表时间:2009-05-04  
引用
今天的测试结果:
    测试120万条记录,PYTHON跑了40多秒 RUBY跑了350多秒.
    200万记录的测试,可能量变引起质变吧,python跑了55秒,RUBY跑了855秒.

晕,当时看了这里…… 可能要我shutup了
OK,最后你需要的是什么结果? 文件要保存什么数据?
0 请登录后投票
   发表时间:2009-05-04   最后修改:2009-05-04
没事,你只处理30万,50万的数据量也行的(再少就比较不出了,起码10万数据PYTHON都是0秒,RUBY是19秒左右,我也晕了,怎么10万数据差别还更大,原来我可还真没有比较只处理10万的量),也够常用的数量级了,结果就是保存格式化后,符合附件规范的文本文件啊

哦,SORRY,处理10万PYTHON是2秒左右,因为我在第3步处理前加了个运行时间提示,看晃了...
0 请登录后投票
   发表时间:2009-05-04  
翘首观望中,谁输谁赢,下注了
0 请登录后投票
   发表时间:2009-05-04  
xukong 写道
没事,你只处理30万,50万的数据量也行的(再少就比较不出了,起码10万数据PYTHON都是0秒,RUBY是18秒左右,我也晕了,怎么10万数据差别还更大,原来我可还真没有比较只处理10万的量),也够常用的数量级了,结果就是保存格式化后,符合附件规范的文本文件啊


你起码要提供数据呀?
0 请登录后投票
   发表时间:2009-05-04   最后修改:2009-05-04
呵,兄台,我真不知道你是怎么看帖子的,我页面上早就列出了3个脚本,压缩包里面也有对应的3个文件...

也早就有了相关说明:
执行 MakeTestData.py 指定数字 生成指定数字条数的测试话单,比如 MakeTestDagta.py 1200000 就生成120万条数据,里面的数据没有任何意义,就是为了达到测试量的数据而已,为了方便,发送和接收数据都设置为指定数据的一半.

你准备在LINUX下测试?我看你回帖是在ARCH下跑的,听说RUBY在LINUX性能会好点?我个人习惯用UBUNTU,呵...
0 请登录后投票
   发表时间:2009-05-04  
xukong 写道
呵,兄台,我真不知道你是怎么看帖子的,我页面上早就列出了3个脚本,压缩包里面也有对应的3个文件...

执行 MakeTestData.py 指定数字 生成指定数字条数的测试话单,比如 MakeTestDagta.py 1200000 就生成120万条数据,里面的数据没有任何意义,就是为了达到测试量的数据而已,为了方便,发送和接收数据都设置为指定数据的一半.

你准备在LINUX下测试?我看你回帖是在ARCH下跑的,听说RUBY在LINUX性能会好点?我个人习惯用UBUNTU,呵...


没钱人,用不起 Windows ……

PS:你不说我怎么知道……
0 请登录后投票
   发表时间:2009-05-04  
wosmvp 写道
xukong 写道
呵,兄台,我真不知道你是怎么看帖子的,我页面上早就列出了3个脚本,压缩包里面也有对应的3个文件...

执行 MakeTestData.py 指定数字 生成指定数字条数的测试话单,比如 MakeTestDagta.py 1200000 就生成120万条数据,里面的数据没有任何意义,就是为了达到测试量的数据而已,为了方便,发送和接收数据都设置为指定数据的一半.

你准备在LINUX下测试?我看你回帖是在ARCH下跑的,听说RUBY在LINUX性能会好点?我个人习惯用UBUNTU,呵...


没钱人,用不起 Windows ……

PS:你不说我怎么知道……



呵,呵,我想说也说不了啊,所以我写了,但是你不知道怎么没看见我也没有办法啊...
0 请登录后投票
   发表时间:2009-05-04  
wosmvp 写道
xukong 写道
呵,兄台,我真不知道你是怎么看帖子的,我页面上早就列出了3个脚本,压缩包里面也有对应的3个文件...

执行 MakeTestData.py 指定数字 生成指定数字条数的测试话单,比如 MakeTestDagta.py 1200000 就生成120万条数据,里面的数据没有任何意义,就是为了达到测试量的数据而已,为了方便,发送和接收数据都设置为指定数据的一半.

你准备在LINUX下测试?我看你回帖是在ARCH下跑的,听说RUBY在LINUX性能会好点?我个人习惯用UBUNTU,呵...


没钱人,用不起 Windows ……

PS:你不说我怎么知道……



看不懂之间的逻辑~
0 请登录后投票
   发表时间:2009-05-04   最后修改:2009-05-04
seraphim871211 写道
wosmvp 写道
xukong 写道
呵,兄台,我真不知道你是怎么看帖子的,我页面上早就列出了3个脚本,压缩包里面也有对应的3个文件...

执行 MakeTestData.py 指定数字 生成指定数字条数的测试话单,比如 MakeTestDagta.py 1200000 就生成120万条数据,里面的数据没有任何意义,就是为了达到测试量的数据而已,为了方便,发送和接收数据都设置为指定数据的一半.

你准备在LINUX下测试?我看你回帖是在ARCH下跑的,听说RUBY在LINUX性能会好点?我个人习惯用UBUNTU,呵...


没钱人,用不起 Windows ……

PS:你不说我怎么知道……



看不懂之间的逻辑~


应该是回答我"你准备在LINUX下测试?"的,不错啊,在盗版横行的国内内忍受方便的盗版WIN的诱惑,只用LINUX,很好的了,我工作上的机子是正版的,家里的是蕃茄, 不过我也尽量买了正版软件的,嘿,嘿,原来买了KV200,买过一年的卡巴,买过QIM
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics