相关疑难解决方法(0)

在C++程序中以编程方式检测字节顺序

是否有一种编程方式来检测您是否在大端或小端架构上?我需要能够编写将在Intel或PPC系统上执行的代码并使用完全相同的代码(即没有条件编译).

c++ algorithm endianness

201
推荐指数
14
解决办法
10万
查看次数

如何通过IO时序测量找到L1缓存行大小的大小?

作为一项学校作业,我需要找到一种方法来获取L1数据缓存行大小,而无需读取配置文件或使用api调用.假设使用内存访问读/写时序来分析和获取此信息.那我该怎么做呢?

在完成另一部分任务的不完整尝试中,为了找到缓存的级别和大小,我有:

for (i = 0; i < steps; i++) {
    arr[(i * 4) & lengthMod]++;
}
Run Code Online (Sandbox Code Playgroud)

我想也许我只需要改变第2行,(i * 4)部分?所以一旦我超过缓存行大小,我可能需要更换它,这需要一些时间?但它是如此直截了当?所需的块可能已经存在于内存中?或者perpahs我仍然可以依靠这样一个事实:如果我有足够大的steps,它仍然可以非常准确地运作?

UPDATE

下面是对GitHub的尝试 ...主要部分如下

// repeatedly access/modify data, varying the STRIDE
for (int s = 4; s <= MAX_STRIDE/sizeof(int); s*=2) {
    start = wall_clock_time();
    for (unsigned int k = 0; k < REPS; k++) {
        data[(k * s) & lengthMod]++;
    }
    end = wall_clock_time();
    timeTaken = ((float)(end - start))/1000000000;
    printf("%d, %1.2f \n", s * sizeof(int), timeTaken); …
Run Code Online (Sandbox Code Playgroud)

c c++ performance caching cpu-architecture

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

标签 统计

c++ ×2

algorithm ×1

c ×1

caching ×1

cpu-architecture ×1

endianness ×1

performance ×1