gpt4 book ai didi

c - 如何根据运行时需要选择类型?

转载 作者:太空宇宙 更新时间:2023-11-04 06:06:49 24 4
gpt4 key购买 nike

我有以下情况,我期待 SO 人员的一些专家建议。

我正在编写一个应用程序,作为其中的一部分,我需要公开一个 API用于创建、修改和删除对象。创建的每个对象都应该唯一标识(仅使用正标识符)!

系统在给定的一天将有以下数量的对象。

  1. 最小 - <50,000 objects ( 60% - 14.4/24 hrs )
  2. 平均 - >50,ooo but <65,000 objects ( 30% - 7.2/24 hrs )
  3. 峰值 - >65,000 but <100,000 objects ( 10% - 2.4/24 hrs )

现在,问题是,type 应该是什么?对象标识符?案例#1#2将适合 unsigned short int (2 bytes)。但它不能容纳案例 #3 的对象.所以案例#3需要更宽的类型,例如 int (4 bytes)。

我不想使用 int当系统万一#1和案例#2 ( 90% 的时间),因为,假设当前有 65k系统中的对象,如果我们使用 int保存对象 ID 那么我们将使用两倍于使用 unsigned short int 的内存大小. OTOH,当系统处于高峰时(10% 的时间)我们绝对需要int存储对象 ID。

而且,系统有时会在 #2 之间波动。和 #3以用户需求为导向。

C , 有没有办法以内存有效的方式处理这种情况,即通过更改 type基于运行时使用的对象 ID?!

注意:当对象被删除时,删除的对象 ID 将用于创建下一个对象。对象 ID 包装只会在极端情况下进行(直到并且除非绝对需要)。

最佳答案

C 语言不支持动态改变某些东西的类型。您可能会弄清楚如何以一种或另一种方式进行操作,但这可能涉及将大部分代码编译两次(一次用于 16 位整数,一次用于 32 位整数),然后在运行时选择哪个版本的要运行的代码。这听起来很痛苦,而且最多只能为您节省 200 kB 的内存(如果有的话)。

您的计算机可能已经有 GB 的内存,所以我无法想象 200 kB 会有什么不同。如果您实际上是在一台内存为 16 MB 的老式机器上工作,那么请向您的老板要一台更好的机器。程序员很贵,硬件很便宜。

关于c - 如何根据运行时需要选择类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8779889/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com