小编Con*_*ery的帖子

在x86上独占访问L1缓存行?

如果一个64字节的缓冲区被大量读/写,那么它很可能会被保存在L1中; 但有没有办法强迫这种行为?

同样,给一个核心独占访问这64个字节,并告诉它不要将数据与其他核心和内存控制器同步,这样这些64个字节总是存在于一个核心的L1中,无论CPU是否认为它经常被使用.

performance x86 assembly low-level cpu-cache

4
推荐指数
1
解决办法
178
查看次数

在推导函数参数时是否需要考虑隐式用户定义转换运算符() 的解决方法?

考虑以下示例,它尝试将 a 传递std::array给函数。当然不考虑“转换”,但是有没有不需要明确的解决方法?特别是如果该类已经提供了必要的属性(value_type 等)。

template <typename T, size_t N>
struct Array_t
{
    using value_type = T;
    using size_type = size_t;

    std::array<T, N> Internal{};

    constexpr operator auto() { return Internal; }
};

template <typename T, size_t N> constexpr bool Test(std::array<T, N> Input)
{
    return Input.size() == 32;
}

constexpr std::array<uint8_t, 32> OK1 = Array_t<uint8_t, 32>();
constexpr auto OK2 = Test((std::array<uint8_t, 32>)Array_t<uint8_t, 32>{});
constexpr auto OK3 = Test(Array_t<uint8_t, 32>().Internal);

// could not deduce template argument for 'std::array<_Ty,_Size>'
// from 'Array_t<uint8_t,32>' …
Run Code Online (Sandbox Code Playgroud)

c++ templates types c++20

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

标签 统计

assembly ×1

c++ ×1

c++20 ×1

cpu-cache ×1

low-level ×1

performance ×1

templates ×1

types ×1

x86 ×1