小编G. *_*age的帖子

C++ 编译器是否会调整小函数来优化缓存行获取?

我可能误解了缓存获取的工作原理,但我很好奇是否有任何编译器优化用于对齐未内联的小函数。

如果给定机器上的缓存行大小为 64 字节,那么将指向小于 64 字节的函数的函数指针在单个缓存行中对齐以防止多次缓存提取来检索该函数是否有意义?

即使函数大小为 100 字节,它仍然可以与 2 个缓存行对齐,如果未对齐,最坏的情况是 3 个缓存行。这是一种可行的优化吗?编译器是否在实际应用程序中使用类似的东西,例如将小型常用函数打包在一起?

c++ optimization assembly memory-alignment compiler-optimization

6
推荐指数
1
解决办法
354
查看次数

为什么这段代码不将基类转换为c ++中的派生类?

为什么此C ++代码不起作用?它旨在将基类动态转换为派生类。我将如何实现?

    class base {
    public:
        int x = 0;
    };

    class a : public base {
    public:
        char c = 'a';
    };

    class b : public base {
    public:
        long int d = 'b';
    };

    std::vector<base> vec;
    for (int i = 0; i < 5; i++) {
        b temp;
        vec.push_back(temp);
    }

    for (int i = 0; i < 5; i++) {
        b* temp = (b*)&vec[i];
        std::cout << temp->d << std::endl;
    }
Run Code Online (Sandbox Code Playgroud)

c++

2
推荐指数
1
解决办法
154
查看次数