当前位置: 首页 > 知识库问答 >
问题:

重新定义原语类型,以便快速更改RAM使用情况,提高可读性(并可能提高性能)

魏朗
2023-03-14

在花了相当长的时间在多个程序上之后,我发现,根据平台的不同,我有时需要大幅降低RAM使用率,因为某些平台上的资源非常有限。我通常按照这些类型存储大型映射和矩阵,因此从int32切换到int16或从float切换到double(如果它们实际上大小不同)可以轻松地将使用量减少近一半。因此,我刚刚添加了如下重新html" target="_blank">定义:

typedef double Float;
typedef int32_t Int;
typedef uint32_t UInt;

这使我能够快速调整程序中所有重要的基元类型。请注意,程序中的整数实际上都没有超过2字节整数的大小,因此使用int16到int64中的任何一个都没有问题。

此外,在这里使用一个漂亮的“Int”而不是“uint32\u t”似乎更具可读性。在某些情况下,我观察到了性能的变化,通过减少和增加原语类型的大小。

我的问题是:有没有什么缺点我只是错过了?我还没有找到关于这个话题的任何东西,所以如果我错过了,请带我去那里。该代码主要是为我编写的,其他人可能会看到它,但在任何情况下,它都是由我个人或带有适当文档的人提供的。

编辑:为过去的错误感到抱歉,我确实使用了typedefs。

共有1个答案

云瑞
2023-03-14

typedefint32_tInt;不是坏,但typedef双浮动;不是好。因为它令人困惑:事实上,一个Float是一个替身!?

为什么不使用预处理器定义两组类型,一组用于大型类型,另一组用于小型类型。

#ifdef LARGE
typedef int32_t Int;
typedef double Real;
#else
typedef int16_t Int;
typedef float Real;
#endif
void f() {
    cout << sizeof(Int) << endl;
    cout << sizeof(Real) << endl;
}

要使用大型类型:g-o testtest.cpp-DLARGE

要使用小类型:g-o测试。cpp

 类似资料:
  • 问题内容: Kotlin是否可以提高性能?有基准测试吗?Kotlin比Java快吗?我在Kotlin网站上找到了这个。https://kotlinlang.org/docs/reference/comparison- to-java.html 谈论语言功能而不是性能。 问题答案: Kotlin生成的字节码与Java非常相似,因此Kotlin代码的性能在大多数情况下与等效Java代码的性能相同。 内

  • 问题内容: 引用http://sites.google.com/site/gson/gson-design- document : 为什么Gson中的大多数课程都标记为期末考试? 尽管Gson通过提供可插入的串行器和反序列化器提供了相当可扩展的体系结构,但Gson类并不是专门设计为可扩展的。提供非最终类将允许用户合法地扩展Gson类,然后期望该行为在所有后续修订版中均有效。我们选择通过将类标记为f

  • 问题内容: 该规范对于计算CSS具体规定:(粗体雷) 注意:允许重复出现同一 简单选择器 ,并且确实会增加特异性。 因此,例如,具有两倍的特异性比- DEMO 但是,对于“ 简单选择器 ” 一词,规格说明如下:(粗体字) 简单选择器可以是 类型选择 器,也可以是通用选择器,紧随其后的是零个或多个属性选择器,ID选择器或伪类(以任何顺序)。 因此,由于规范说允许重复出现相同的 简单选择器 -这意味着

  • 我反复调用以下代码,以从JSON响应中获取某些字符串值。 将其重构如下是否有意义,还是过度杀戮: 是否可以进一步重构,以便val1、val2、val3和val4作为参数传递给同一方法,并返回一个String?

  • 问题内容: 假设我有以下示例: 例子一 现在,可能是: 例子二 关键不是实际的代码,而是使用一次以上,两次/三次或三次以上的时间。 上午我更好的性能,明智使用 例如两个 比 例如一个 (也许与解释为什么或者为什么不)? 编辑/注意 我怀疑两个更好。当我不可避免地忘记将事件处理程序添加到事件处理程序时,我有点担心的是在添加代码,而不是无意中引入了一个潜在的难以诊断的错误。那么我应该使用还是为此? 谢

  • 我正在用docx4j做一些测试。我需要做的是将复杂的Word文档(2-3页的文本、表格、项目符号列表、图像)转换成XHTML。