“使用”的开销
Overhead of `using`
对于我的问题,我可以通过两种方式使用 using
指令。它们基本上归结为以下选项:
template<typename U>
struct A {
private:
// Define our types
using WrapperType = Wrapper<U>;
public:
U *operator()(U *g) const {
// TODO: use WrapperType
}
};
或:
struct B {
template <typename U>
U *operator()(U *g) const {
// Define the types here instead.
using WrapperType = Wrapper<U>;
// TODO: use WrapperType
}
};
在这两种情况下,都会有其他类模板参数。因此,B
仍将具有模板参数,即使它在此简化示例中看起来不像。
我的问题是:
像在B
那样在本地定义类型是否有任何开销?(与A
相比(?
我不清楚类型声明如何影响生成的代码。代码必须实时运行,这将是代码库的核心。因此,如果有任何开销,我不能使用B
。
话虽如此,在我们的例子中B
更可取,因为理想情况下,我想用各种类型调用这段代码。是的,这确实需要在课堂上。我刚刚极大地简化了这个例子。
像在 B 中那样在本地定义类型是否有任何开销 [在生成的代码上]?
不,没有。
定义类型别名(如何处理using WrapperType = Wrapper<U>;
(只会影响编译,并在运行时开始后完全删除。
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- C++:TypeDef使用元组
- 使用std::multimap迭代器创建std::list
- 从不同线程使用int64的不同字节安全吗
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 为什么在全局范围内使用"extern int a"似乎不行?
- 在C#中处理C++指针而不使用unsafe的最佳方法
- C++对开销较少的容器使用多个过滤器
- 使用静态成员函数而不是普通函数是否有任何开销?
- 如果使用lambda,std::unique_ptr如何没有大小开销
- “使用”的开销
- 使用递归模板函数是否会引入函数调用开销,或者编译器是否大部分时间都内联它(下面的示例)?
- 如何最大限度地减少使用标量 SIMD 内部函数的 SIMD 注册表的双重负载开销
- 不同的功能使用相同的功能,减少开销
- 开销和使用shared_ptr的实现
- 如何在容器中使用引用来避免指针的取消引用开销
- 没有使用模板的开销的派生类
- 使用 std::vector 的开销
- 使用log4cxx关闭日志记录以减少开销
- 未使用代码中的开销