相关疑难解决方法(0)

C++中内联函数的好处?

在C++中使用内联函数的优点/缺点是什么?我看到它只会提高编译器输出的代码的性能,但是使用今天的优化编译器,快速CPU,大容量存储器等(不像1980年那样<内存稀缺,一切都必须适合100KB内存)什么他们今天真的有优势吗?

c++ inline-functions

253
推荐指数
6
解决办法
17万
查看次数

何时使用内联功能何时不使用?

我知道inline是对编译器的提示或请求,用于避免函数调用开销.

那么在什么基础上可以确定函数是否是内联的候选者?在哪种情况下应该避免内联?

c c++ inline

173
推荐指数
5
解决办法
9万
查看次数

无法使用英特尔编译器强制内联C++函数

我有一个定义为的函数

inline void vec_add(__m512d &v3, const __m512d &v1, const __m512d &v2) {
    v3 = _mm512_add_pd(v1, v2);
}
Run Code Online (Sandbox Code Playgroud)

(这__m512d是映射到Intel MIC架构上的SIMD寄存器的本机数据类型)

由于此函数相当短并且经常被调用,我希望它在每次调用时都被内联.但是,即使在我使用-inline-forceinline-O3选项之后,英特尔的编译器似乎也不愿意内联这个函数.它在编译时报告'Forceinline不尊重电话......'.由于我必须使用某些编译器特定的功能,例如__m512d类型,因此英特尔编译器是我唯一的选择.

更多信息:

文件结构非常简单.该函数vec_add在头文件中定义,该文件mic.h包含在另一个文件中test.cc.函数vec_add只是在循环中重复调用,并且不涉及函数指针.一个简单的代码的版本test.cc看起来像这样

for (int i = 0; i < LENGTH; i += 8) {
    // a, b, c are arrays of doubles, and each SIMD register can hold 8 doubles
    __mm512d va = _mm512_load_pd(a + i); // load SIMD register …
Run Code Online (Sandbox Code Playgroud)

c++ inline icc intel-mic

12
推荐指数
1
解决办法
1524
查看次数

用C/C++代码中的定义替换所有函数调用

我想知道是否有一些理论/工具可用于将包含函数调用的代码替换为代码,其中所有函数调用已被其各自的代码替换.

喜欢

main()
{
   fun();
}

fun()
{
   int i;
   fun2();
}

fun2()
{
   int j;
}
Run Code Online (Sandbox Code Playgroud)

main()
{
   int i;
   int j;
}
Run Code Online (Sandbox Code Playgroud)

我知道有很多需要注意的事情,比如局部变量名,递归调用,外部函数调用等等.. ..

我也知道它可能根本不是很有用,但仍然存在这样的事情吗?甚至在理论上?

我应该称它为每个处理器单位提前:)

c c++ theory compiler-construction compiler-theory

3
推荐指数
1
解决办法
823
查看次数

缩短C++模板函数名称

我知道,为了缩短课程名称,我可以做以下事情:

using Time = std::chrono::time_point<std::chrono::system_clock>;
using Clock = std::chrono::system_clock;
Run Code Online (Sandbox Code Playgroud)

但如何正确减少下一行的长度?

/*using Ms = */ std::chrono::duration_cast<std::chrono::milliseconds>
Run Code Online (Sandbox Code Playgroud)

目标代码:

Time start = Clock::now();
// something
Time end = Clock::now();
std::cout << Ms(end - start).count() << std::endl;
Run Code Online (Sandbox Code Playgroud)

c++ c++11

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