To prevent false sharing, I want to align each element of an array to a cache line. So first I need to know the size of a cache line, so I assign each element that amount of bytes. Secondly I want the start of the array to be aligned to a cache line. I am using Linux and 8-core x86 platform...
说明理由
寄存器的单位是比特,而不是字节。因此,这一行在代码的其余部分被错误地使用。
寄存器的单位是比特,而不是字节。因此,这一行在代码的其余部分被错误地使用。
不,你在说一些奇怪的话。我不打算证明它。看一下处理器上的文件,请看这里https://stackoverflow.com/questions/7281699/aligning-to-cache-line-and-knowing-the-cache-line-size/7284876
我不需要登记,我根本就不谈这些问题。
不,你在说一些奇怪的话。我不打算证明它。看一下处理器的文档,请看这里https://stackoverflow.com/questions/7281699/aligning-to-cache-line-and-knowing-the-cache-line-size/7284876
我不需要登记,我根本就不谈这些问题。
嗯...好的。 (清嗓子)总之,每个型号的缓存都不一样。没有办法从软件中知道它的大小。这就是为什么把它作为一个指南是愚蠢的。但所有的处理器都有两种类型的寄存器,熟练的程序员关注的是寄存器的大小。即使是这种寄存器导向也不一定成功,因为编译器和操作系统位于程序和处理器之间。
此外,这条线路的计算方法是不正确的,没有登记。
嗯...好的。总之,不同的处理器的缓存是不同的。而且没有办法从软件中知道它的大小。这就是为什么以它为指导是愚蠢的。但所有的处理器都有两种类型的寄存器,熟练的程序员关注的是寄存器的大小。而且,即使是以寄存器大小为目标也不一定能拯救你,因为编译器和操作系统位于程序和处理器之间。
同样,事情在不断发展,越来越强调多线程,这里有一个跨std库来告诉你这一切
https://en.cppreference.com/w/cpp/thread/hardware_destructive_interference_size
同样不是,事情在发展,越来越多的人强调多线程,在这里你可以看到--cross std库会告诉你一切。
https://en.cppreference.com/w/cpp/thread/hardware_destructive_interference_size
也许吧,但到目前为止,你还没有说服我。它不会告诉你,它会告诉你。仔细阅读说明书。
关于交易、自动交易系统和交易策略测试的论坛
也许吧,但到目前为止,你还没有说服我。
虽然我不太清楚你想要什么转变,但这很容易理解:绝对地址在计算中完全没有用。你难道忘了,内存的参考点是结构的地址吗?而你可能想获得一个结构内存块中的数组的偏移量?而这就是结构的地址和数组的空元素之间的差异得到的结果。
如果缓冲区内没有酒吧的值,应该明确写入缓冲区内。也就是说,如果计算出的值应该输出到缓冲区,我们就把它写到缓冲区,否则,我们就写一个空值。
谢谢你,Artem。
虽然我不太清楚你想要什么偏移量,但很容易理解这个错误:绝对地址在计算中完全没有用。 你难道忘了,内存的参考点是结构地址吗?而你可能想获得一个结构内存块中的数组的偏移量?而这就是结构的地址和数组的零元素之间的区别。
依次采取行动。
1 - 获得当前数据结构中第一个ar[]元素的地址。
2.找出它从高速缓存行开始的偏移量
3.找出从它到缓存行末端的多少个字节
4.找出这个空间能容纳多少个字节,直到缓存行的结束。
你在你的电脑上运行了吗?速度上有区别吗?或者只是我的问题?
2.找出它从高速缓存行开始的偏移量
你怎么会认为这是找出其偏移量的任何方法?
关于交易、自动交易系统和交易策略测试的论坛
虫子,虫子,问题
fxsaber, 2019.07.09 11:13
Data data[]; ArrayResize(data, 32768);
有一个6倍的减速发生!
这些刹车是用来做什么的?