godking.bigNum 大数排序

光庆 3月前 330

注意:

1、用大数排序,测试20万条数据,排序时间约4秒。50万数据排序时间约12秒。

2、注意使用内存回收的方法,如有必要,用完及时回收。

3、下载最新版 godking.bigNum 大数库。

import console;
import godking.bigNum;
var t = {};

console.log("创建20万大数数据:");
var tm = time.tick();
for(i=1;200000;1){
    var s = ..string.random(50,"1234567890");
    table.push(t,godking.bigNum(s));
}
console.dump("创建完毕,耗时:"++(time.tick()-tm),'\n');

console.log("开始排序:");
var tm = time.tick();
table.sort(t,λ(b)owner<b);
console.dump("排序完毕,耗时:"++(time.tick()-tm),'\n');

console.log("保存到文件:")
import fsys.file;
var file = fsys.file("C:\Users\Administrator\Desktop\大数排序结果.txt","w");
for(i=1;#t;1){
    file.write(tostring(t[i]),'\n');
}
file.close();
console.dump("保存完毕,耗时:"++(time.tick()-tm),'\n');

//释放内存
console.dump("当前内存占用:"++math.floor(collectgarbage("count")/1024)++"M");
t = {}; //先释放引用
godking.bigNum.clear(true); //再清空大数对象,内部已内置两次collectgarbage("collect")
console.dump("已进行垃圾回收,当前内存占用:"++math.floor(collectgarbage("count")/1024)++"M");

//完成上面两步,可进行两次垃圾回收。因为 clear(true) 已内部执行,下面两句代码可忽略。
//collectgarbage("collect")
//collectgarbage("collect")

console.pause(true);

最新回复 (0)
返回