在 C 中组织数据的最快方法是什么?
What is the fastest way to organize data in C?
我需要在 C 中跟踪 大量 布尔型数据。我正在编写一个玩具内核,需要存储关于某个内存地址是否为已使用或免费。因此,我需要以最快、最有效的方式存储和遍历这些数据。由于我是从头开始编写内核,所以我 无法使用 C 标准库。 组织、遍历和修改大量布尔型数据的最佳、最快、最有效的方法是什么不使用 C 标准库?例如。位图、数组或链表会占用最少的资源来遍历和修改吗?
许多文件系统都有同样的问题:指示分配单元(磁盘扇区组)是否可用。除了MSDOS的FAT,我想都用一个bitmap。肯定是 NTFS 和 Linux 的 ext/ext2/ext3/ext4 使用位图。
有几个简单的优化可以进行。如果分配需要超过 8/16/32/64 个顺序单元,使用相应的整数大小一次检查许多位很简单。如果位为零意味着 "available",则测试零整数会告诉您整个分配是否可用。但是,可能需要考虑边界优化。
我需要在 C 中跟踪 大量 布尔型数据。我正在编写一个玩具内核,需要存储关于某个内存地址是否为已使用或免费。因此,我需要以最快、最有效的方式存储和遍历这些数据。由于我是从头开始编写内核,所以我 无法使用 C 标准库。 组织、遍历和修改大量布尔型数据的最佳、最快、最有效的方法是什么不使用 C 标准库?例如。位图、数组或链表会占用最少的资源来遍历和修改吗?
许多文件系统都有同样的问题:指示分配单元(磁盘扇区组)是否可用。除了MSDOS的FAT,我想都用一个bitmap。肯定是 NTFS 和 Linux 的 ext/ext2/ext3/ext4 使用位图。
有几个简单的优化可以进行。如果分配需要超过 8/16/32/64 个顺序单元,使用相应的整数大小一次检查许多位很简单。如果位为零意味着 "available",则测试零整数会告诉您整个分配是否可用。但是,可能需要考虑边界优化。