就是同一个内存地址,可能同时有多个东西指向它,包括用指针指向它(数组也算指针)、用引用指向它。
这会影响编译器的自动向量化(把循环之类的转成SIMD指令)、指令重排(影响cpu流水线的速度)
Fortran绝对无别名,Rust里读取的别名可以有任意多个但同一时间只能有一个写入的别名,c/c++是几乎不做任何限制(主要靠const,后来加了restrict关键字用于别名的限制)。
c++里普通变量用别名没啥问题,只要保证核心循环、数组运算里用restrict(或者各家编译器对这个关键字的扩展)让编译器可以自动优化,不然可能需要手动优化。
【 在 MTBi 的大作中提到: 】
: 你说的“别名”,
: 是指c++里的引用吗?auto &吗?
: 我大量使用了。。。。。
--
修改:z16166 FROM 123.122.126.*
FROM 123.122.126.*