小编krb*_*686的帖子

Node.js process.hrtime()基准测试bug

前几天我发现Node.js有一个叫做高分辨率计时器的函数

process.hrtime

据说这个计时器具有纳秒级的分辨率,这很棒,因为现在我可以比使用Date模块更精确地计算时间.

无论如何我正在使用这个新的计时器来尝试创建一个Timer对象,可以将不同的任务传递给它.不幸的是,我得到一些奇怪的负面结果让我质疑这个假设的"高分辨率"计时器的准确性和可靠性.

让我告诉你我的代码:

hrTimer.js

//IMPORTS
var async = require('async');

HrTimer = {

    time: function(task) {
        var t1 = t2 = '';

        async.series([
            function(callback){
                t1 = process.hrtime();
                callback();
            },
            task,
            function(callback){
                t2 = process.hrtime();
                callback();
            }
        ]);


        var t1 = t1[0].toString() + '.' + t1[1].toString();
        var t2 = t2[0].toString() + '.' + t2[1].toString();


        var dif = parseFloat(t2)-parseFloat(t1);

        if(dif < 0){

            debugger;
            console.log(t1);
            console.log(t2);
        }

        return dif;
    }
};


module.exports = HrTimer;
Run Code Online (Sandbox Code Playgroud)

因此,有时它会进入代码块,其中dif <0.如果异步模块工作正常,并且计时器正常工作,则不会发生这种情况.有帮助吗?

node.js

2
推荐指数
1
解决办法
2288
查看次数

在C中,具有相同值的变量的位移与常量的位移是否存在差异?

我试图将值移位0xFFFFFFFF32位,如果我写的话它正确地变为0

x = x << 32;
Run Code Online (Sandbox Code Playgroud)

但它保持不变 0xFFFFFFFF

我写的时候:

x = x << y
Run Code Online (Sandbox Code Playgroud)

什么时候 y = 32

我根本不明白这一点.

我需要能够使用一个变量,对于一个转换的函数 32 - n

编辑

如果<< 32是未定义的,那么我真的无法想出一种方法来创建一个用1来填充n - 高位的函数

c bit-shift

2
推荐指数
1
解决办法
862
查看次数

仅使用C中的按位运算符向右旋转n

我试图通过仅使用按位运算符在C中实现rotateRight by n函数.

到目前为止,我已经决定使用它了.

y = x >> n
z = x << (32 - n)

g = y | z
Run Code Online (Sandbox Code Playgroud)

所以以价值为例 11010011

如果我试着`rotateRight(5):

y11111110

z01100000

然后g成为111111110

但是应该是正确的答案 10011110

这几乎可以工作,但问题是当我需要它来执行逻辑移位时右移复制符号位,所以我的一些答案是他们应该是什么的负面.我怎样才能解决这个问题?

注意 我无法使用强制转换无符号类型

c bit-manipulation rotation

2
推荐指数
1
解决办法
2万
查看次数

LEA是执行有符号还是无符号算术?

我试图了解这条线的工作原理:

lea (%eax, %eax, 4), %eax
Run Code Online (Sandbox Code Playgroud)

所以看起来这基本上说:

%eax = 5* %eax
Run Code Online (Sandbox Code Playgroud)

但LEA是签名还是未签名?

x86 assembly

2
推荐指数
1
解决办法
662
查看次数

csh(tcsh)指定管道命令输出时的模糊输出重定向w/stderr重定向到脚本中的变量

我正在尝试将我的管道命令的输出分配给csh脚本中的变量.

命令是:

set VAR="`ping $1 2>&1 | grep 'unknown' | cut -b 7-13`"
Run Code Online (Sandbox Code Playgroud)

但是,这不想工作.我得到了一个模糊的"不明确的输出重定向".

我迷路了,因为当我在终端输入它时命令本身有效,我可以看到文本 unknown

linux shell csh ping

2
推荐指数
1
解决办法
6688
查看次数

在C中创建包含结构数组的struct时遇到问题

好吧,我有一些类型的定义:

typedef struct {
    int validBit
    int pageNumber
} PT_ENTRY;

typedef struct {
    PT_ENTRY entry[128];
} PT;
Run Code Online (Sandbox Code Playgroud)

稍后在代码中,我尝试:

PT pt = {};

int i;
for(i=0;i<128;i++){
    pt.entry[i] = malloc(sizeof(PT_ENTRY));
}
Run Code Online (Sandbox Code Playgroud)

这给了我错误:

Incompatible types in assignment.
Run Code Online (Sandbox Code Playgroud)

所以我很困惑,因为我认为我昨天完成了同样的事情而且工作正常,然后我改变了我的代码但决定改回来.

pt.entry不是一个指针数组?我在这里错过了什么?

或者更好的是,创建包含128个结构数组PT_ENTRY的结构PT的最佳和最快方法是什么?

c pointers

0
推荐指数
1
解决办法
1188
查看次数

标签 统计

c ×3

assembly ×1

bit-manipulation ×1

bit-shift ×1

csh ×1

linux ×1

node.js ×1

ping ×1

pointers ×1

rotation ×1

shell ×1

x86 ×1