代码之家  ›  专栏  ›  技术社区  ›  geza

基本型与类型的性能差异

c++
  •  0
  • geza  · 技术社区  · 6 年前

    例如,我想创建一个新的基本类型 byte

    第一个想法是使用

    enum class byte: unsigned char { };
    

    但是,这种方法有一个问题,我不能为它定义赋值运算符,所以从 int 无法完成:

    byte a = 42; // invalid, need to use something like "byte a = (byte)42;"
    

    class byte {
        private:
            unsigned char data;
        public:
            // operators
    };
    

    这种方法可能有效,但我担心它的性能。

    我的问题:

    • 字节 类型优化程度低于 unsigned char
    • 在流行的平台(windows、intel-linux、android、iOS)上,流行的编译器(gcc、clang、msvc)目前的状态如何?它们目前是否足够好,可以发出相同的代码 字节 无符号字符 ? 我对任何不同之处都感兴趣。

    我所知道的唯一区别是,在使用i386 systemv ABI(如32位linux)的平台上, 字节 是在堆栈上返回的,而不是函数中的寄存器,因此性能稍差。还有什么不同吗?

    0 回复  |  直到 6 年前