Questions tagged «memset»

9
为什么要在memset上使用bzero?
在上学期的系统编程课程中,我们必须用C语言实现一个基本的客户端/服务器。在初始化结构(如sock_addr_in或char缓冲区(我们用来在客户端和服务器之间来回发送数据)时,指示我们仅使用bzero而不memset初始化它们。他从不解释原因,我很好奇这是否有正当理由吗? 我在这里看到:http://fdiv.net/2009/01/14/memset-vs-bzero-ultimate-showdown这bzero是更有效的,由于一个只能将要归零记忆的事实,所以也没有必须做memset可能做的任何其他检查。不过,这似乎仍不一定是绝对不memset用于清零内存的原因。 bzero被视为已弃用,而且不是标准C函数。根据该手册,由于这个原因,它memset是首选bzero。那么,为什么还要使用bzero完memset呢?仅仅是为了提高效率,还是更多?同样,memset超过的收益有什么好处bzero,使其成为较新程序的事实上的首选选择?

7
将C int数组重置为零:最快的方法?
假设我们有一个T myarray[100]T = int,unsigned int,long long int或unsigned long long int,将所有内容重置为零的最快方法是什么(不仅用于初始化,而且在程序中多次重置内容) ?也许与记忆模式? 对于类似的动态数组也存在同样的问题T *myarray = new T[100]。
102 c++  c  arrays  memset 

12
在C中将二维数组归零的最快方法?
我想将C中的一个大型2d数组重复置零。这是我目前正在做的事情: // Array of size n * m, where n may not equal m for(j = 0; j < n; j++) { for(i = 0; i < m; i++) { array[i][j] = 0; } } 我尝试使用memset: memset(array, 0, sizeof(array)) 但这仅适用于一维阵列。当我打印2D数组的内容时,第一行为零,但是随后我得到了一个随机大数的负载,它崩溃了。


2
为什么std :: fill(0)比std :: fill(1)慢?
我在一个系统std::fill上观察到,与恒定值或动态值相比,将恒定值std::vector<int>设置为大时显着且始终较慢:01 5.8 GiB /秒和7.5 GiB /秒 但是,对于较小的数据,结果会有所不同,但fill(0)速度更快: 如果有多个线程,则在4 GiB数据大小下,fill(1)斜率更高,但峰值要低得多fill(0)(51 GiB / s与90 GiB / s): 这就提出了第二个问题,即为什么峰值带宽 fill(1)这么低。 为此的测试系统是双插槽Intel Xeon CPU E5-2680 v3,设置为2.5 GHz(通过/sys/cpufreq),带有8x16 GiB DDR4-2133。我使用GCC 6.1.0(-O3)和Intel编译器17.0.1(-fast)进行了测试,两者均得到相同的结果。GOMP_CPU_AFFINITY=0,12,1,13,2,14,3,15,4,16,5,17,6,18,7,19,8,20,9,21,10,22,11,23被设定。Strem / add / 24线程在系统上的速度为85 GiB / s。 我能够在不同的Haswell双套接字服务器系统上重现这种效果,但在任何其他体系结构上均无法重现。例如,在Sandy Bridge EP上,内存性能是相同的,而在高速缓存fill(0)中则要快得多。 这是要重现的代码: #include <algorithm> #include <cstdlib> #include <iostream> #include <omp.h> #include <vector> using value = …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.