为什么我写的 C++ Addons 善后这么卡? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
XadillaX
V2EX    Node.js

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

  •  1
     
  •   XadillaX 2014-09-16 15:04:32 +08:00 4265 次点击
    这是一个创建于 4118 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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  
       214-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     Solana     5378 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 03:12 PVG 11:12 LAX 19:12 JFK 22:12
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86