godking.bigNum 大数排序

光庆 2024-6-4 888

注意:

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

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

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

Code AardioLine:37复制
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
    • 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)
    返回