我写了一段代码,其中有一个数据:
unsigned char buf[4096]; // data in chunks of size 4k
unsigned counter[256];
Run Code Online (Sandbox Code Playgroud)
我正在为每3个连续字节添加i/p数据并存储ans.例如:temp [4096]; temp [0] = buf [0] + buf [1] + buf [2]; ......直到4096年
然后使用代码从temp的结果生成直方图:
for(i = 0; i < 4096; i++)
counter[temp[i]]++;
Run Code Online (Sandbox Code Playgroud)
对直方图进行排序(冒泡排序),然后获取前8个最重复的值.代码在linux内核中运行(2.6.35)
我面临的问题是,如果我删除排序部分,执行代码所需的时间非常快(我的笔记本电脑上的6微秒,使用gettimeofday函数测量).但在引入分选后,该过程在很大程度上减慢了(44微秒).排序功能本身需要20微秒,我无法理解为什么时间会增加这么多.我使用cachegrind进行了内存分析,结果是正常的,我甚至尝试禁用抢占,但它仍然没有显示任何差异.如果有人可以帮助我在这里.谢谢!
我试图在C代码中定义一个双数据类型变量,它将在Windows内核中使用.代码编译但链接时出错.我尝试在源文件中使用libcntpr.lib,并在代码中定义__fltused变量,但无济于事.如果有人可以帮助我如何使用它,我将非常感激.
任何人都可以告诉我在Linux VM可调参数中使用dirty_bytes和dirty_background_bytes.
我推断dirty_bytes指定应用程序执行写入之后的内存量,开始直接写入磁盘.它是否正确或分配的内存量是否已用完,该部分首先转移到磁盘,然后新数据再次存储在内存中.例如.假设我想将1 GB文件传输到磁盘,并将dirty_bytes设置为100 MB然后将100 MB写入内存后,执行写入的应用程序现在开始将数据直接写入磁盘或将100 MB传输到磁盘磁盘然后再将100 MB写入内存然后转移到磁盘等等?
在dirty_background_bytes的情况下,当脏内存部分超过此值时,pdflush会在后台将脏数据写回磁盘.
我对这两个参数的理解是否正确?