XadillaX
V2EX  ›  Node.js

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

  •  1
     
  •   XadillaX · Sep 16, 2014 · 4966 views
    This topic created in 4440 days ago, the information mentioned may be changed or developed.
    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++ 处理的那段程序段已经结束了,但是为什么还是要等那么久呢?

    在线等!急!
    Supplement 1  ·  Sep 16, 2014
    那段测试代码:

    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 replies  •  2014-09-17 20:12:07 +08:00
    dogarm
    dogarm
    Sep 16, 2014
    1
    嗯,这个我遇到过,很简单,找到答案后我自己都震惊自己的愚蠢了。

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

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

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

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

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

    基本上是这样的解决办法:
    哪里需要首先!
    已解决。
    又出现了!
    用首先解决。
    XadillaX
    XadillaX
    OP
    Sep 16, 2014
    22
    问题解决了。

    被自己蠢哭了。
    sunocean
    sunocean
    Sep 17, 2014
    23
    @PP 也是最没有价值的帖子之一
    PP
    PP
    Sep 17, 2014
    24
    @sunocean 恐怕我还真的无法同意您的观点,一方面价值标准在广义上具有多样性,另一方面价值标尺在狭义上不能用来衡量一切。遇到这样的帖子,即便不喜欢也不必去介意,笑一笑不是很开心的吗?
    coolicer
    coolicer
    Sep 17, 2014
    25
    @XadillaX 楼主,答案是什么
    sunocean
    sunocean
    Sep 17, 2014
    26
    @PP OK,你说的对
    XadillaX
    XadillaX
    OP
    Sep 17, 2014
    27
    @coolicer 答案是我为了贪省力居然用 stl 来管理内存池的对象——最最可恶的是我居然用了 list。然后我改成 queue 就变快了。
    qiukun
    qiukun
    Sep 17, 2014
    28
    @XadillaX 。。为啥那么文明全部析构了再 exit 呢。(c艹 的奇怪特性
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1590 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 49ms · UTC 16:28 · PVG 00:28 · LAX 08:28 · JFK 11:28
    ♥ Do have faith in what you're doing.