V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
XadillaX
V2EX  ›  Node.js

为什么我写的 C++ Addons 善后这么卡?

  •  1
     
  •   XadillaX · 2014-09-16 15:04:32 +08:00 · 3763 次点击
    这是一个创建于 3703 天前的主题,其中的信息可能已经有所发展或是发生改变。
    https://github.com/XadillaX/thmclrx/tree/fb1fc3e69c8fa7dac7037ba86e923ce0c8da9ab1/src

    这个就是我写的 Addon,以及在

    https://github.com/XadillaX/thmclrx/blob/fb1fc3e69c8fa7dac7037ba86e923ce0c8da9ab1/test/test.js

    是测试代码。

    我指的慢不是执行的时候慢,而是“善后”,我也不知道怎么解释——

    总之效果就是 console 已经有东西打印出来了,但是要过好一段时间之后才能开始下一步操作。

    比如把

    for(var i = 0; i < 35500; i++) {
    rgb.push({
    r : Number.random(0, 255),
    g : Number.random(0, 255),
    b : Number.random(0, 255)
    });
    }

    里面的 35500 改成一个很小的数字,那么处理完 console 出来之后秒退,但是如果改成更大的话,console 之后要等非常就之后程序才结束。

    照理说都已经 console 出来了,说明由 C++ 处理的那段程序段已经结束了,但是为什么还是要等那么久呢?

    在线等!急!
    第 1 条附言  ·  2014-09-16 16:02:21 +08:00
    那段测试代码:

    var rgb = [];
    for(var i = 0; i < 35500; i++) {
    rgb.push({
    r : Number.random(0, 255),
    g : Number.random(0, 255),
    b : Number.random(0, 255)
    });
    }
    var result = thmclrx.cpp.mindifferGet(rgb);
    console.log(result);
    28 条回复    2014-09-17 20:12:07 +08:00
    dogarm
        1
    dogarm  
       2014-09-16 15:36:40 +08:00
    嗯,这个我遇到过,很简单,找到答案后我自己都震惊自己的愚蠢了。

    基本上是这样的解决办法:
    首先,
    linea
        2
    linea  
       2014-09-16 15:38:39 +08:00   ❤️ 1
    嗯,这个我遇到过,很简单,找到答案后我自己都震惊自己的愚蠢了。

    基本上是这样的解决办法:
    哪里需要首先!
    已解决。
    XadillaX
        3
    XadillaX  
    OP
       2014-09-16 15:39:28 +08:00
    @dogarm @linea 泥们两个够了。
    zzNucker
        4
    zzNucker  
       2014-09-16 15:39:45 +08:00
    嗯,这个我遇到过,很简单,找到答案后我自己都震惊自己的愚蠢了。

    基本上是这样的解决办法:
    for (var i=0,len=35500;i<len;i++) { 首先 }
    已解决。
    lisposter
        5
    lisposter  
       2014-09-16 15:44:01 +08:00
    嗯,这个我遇到过,很简单,找到答案后我自己都震惊自己的愚蠢了。

    基本上是这样的解决办法:
    for (var i=0,len=35500;i<len;i++) { process.exit(1); }
    已解决。
    advancedxy
        6
    advancedxy  
       2014-09-16 15:45:18 +08:00
    @zzNucker lss赶紧搬砖去..
    XadillaX
        7
    XadillaX  
    OP
       2014-09-16 15:46:26 +08:00
    @lisposter lss赶紧搬砖去..
    hustlzp
        8
    hustlzp  
       2014-09-16 15:49:17 +08:00
    哈哈哈,一群歪楼的~~
    linea
        9
    linea  
       2014-09-16 15:50:38 +08:00   ❤️ 1
    因为你node写多了,使得写出来的代码它以为它是异步的。
    djchurch007
        10
    djchurch007  
       2014-09-16 16:14:29 +08:00
    嗯,这个我遇到过,很简单,找到答案后我自己都震惊自己的愚蠢了。

    基本上是这样的解决办法:
    for (var i=0,len=35500;i<len;i++) { 尺寸不对口,进不去,重试中 }
    已解决。
    coolicer
        11
    coolicer  
       2014-09-16 17:31:44 +08:00
    看来楼主很受欢迎啊。
    XadillaX
        12
    XadillaX  
    OP
       2014-09-16 17:32:35 +08:00
    @coolicer 他们都是来拿我开涮的。
    qiukun
        13
    qiukun  
       2014-09-16 18:20:54 +08:00
    interesting
    XadillaX
        14
    XadillaX  
    OP
       2014-09-16 18:26:09 +08:00
    @qiukun 求解。
    qiukun
        15
    qiukun  
       2014-09-16 18:28:11 +08:00
    @XadillaX 我瞎猜是 node 的垃圾回收?
    qqboy77
        16
    qqboy77  
       2014-09-16 18:53:15 +08:00
    因为胖
    qian19876025
        17
    qian19876025  
       2014-09-16 20:45:21 +08:00
    楼主非要拿着绣花针 跟RPG干仗 没法啊
    Bakemono
        18
    Bakemono  
       2014-09-16 20:52:23 +08:00
    哈哈哈哈好好萌啊ls们和lz >A<
    XadillaX
        19
    XadillaX  
    OP
       2014-09-16 21:54:05 +08:00 via Android
    @qiukun 我开始也是这么想的,但是后来做了个实验,于是又迷茫了。
    PP
        20
    PP  
       2014-09-16 23:03:29 +08:00
    哈哈哈哈,这是我在V2EX上看到的最欢乐的帖子,哈哈哈哈……
    konakona
        21
    konakona  
       2014-09-16 23:07:40 +08:00
    嗯,这个我遇到过,很简单,找到答案后我自己都震惊自己的愚蠢了。

    基本上是这样的解决办法:
    哪里需要首先!
    已解决。
    又出现了!
    用首先解决。
    XadillaX
        22
    XadillaX  
    OP
       2014-09-16 23:24:39 +08:00
    问题解决了。

    被自己蠢哭了。
    sunocean
        23
    sunocean  
       2014-09-17 12:07:46 +08:00
    @PP 也是最没有价值的帖子之一
    PP
        24
    PP  
       2014-09-17 12:47:20 +08:00
    @sunocean 恐怕我还真的无法同意您的观点,一方面价值标准在广义上具有多样性,另一方面价值标尺在狭义上不能用来衡量一切。遇到这样的帖子,即便不喜欢也不必去介意,笑一笑不是很开心的吗?
    coolicer
        25
    coolicer  
       2014-09-17 13:17:00 +08:00
    @XadillaX 楼主,答案是什么
    sunocean
        26
    sunocean  
       2014-09-17 13:22:31 +08:00
    @PP OK,你说的对
    XadillaX
        27
    XadillaX  
    OP
       2014-09-17 17:10:22 +08:00
    @coolicer 答案是我为了贪省力居然用 stl 来管理内存池的对象——最最可恶的是我居然用了 list。然后我改成 queue 就变快了。
    qiukun
        28
    qiukun  
       2014-09-17 20:12:07 +08:00
    @XadillaX 。。为啥那么文明全部析构了再 exit 呢。(c艹 的奇怪特性
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3067 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 13:41 · PVG 21:41 · LAX 05:41 · JFK 08:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.