【发布时间】:2011-04-19 05:24:26
【问题描述】:
我一直对此感到疑惑,但从未真正深入研究过。
情况是这样的:我有一组比较大的数据实例。每个实例具有相同的集合或属性,例如:
# a child instance
name
age
height
weight
hair_color
favorite_color
list_of_hobbies
通常我会将一个孩子表示为一个散列,并将所有孩子放在一个散列散列(或散列数组)中。
这种方法一直困扰着我的是,我并没有真正使用所有孩子(内部哈希)都具有相同结构的事实。如果数据真的很大,似乎在内存方面可能会浪费,所以如果每个内部哈希都是从头开始存储的,那么 key names 的名称似乎比数据占用更多的空间本身...
另请注意,当我构建此类数据结构时,我经常将它们nstore 写入磁盘。
我想知道创建一个子 object 从这个角度来看是否更有意义,即使我并不真的需要 OO。会不会更紧凑?查询会更快吗?
或者也许将每个孩子表示为一个数组有意义?例如:
my ($name, $age, $height, $weight, $hair_color, $favorite_color, $list_of_hobbies) = 0..7;
my $children_h = {
James => ["James", 12, 1.62, 73, "dark brown", "blue", ["playing football", "eating ice-cream"]],
Norah => [...],
Billy => [...]
};
print "James height is $children_h->{James}[$height]\n";
回想一下,我主要关心的是空间效率(存储时的 RAM 或磁盘)、时间效率(即加载存储的数据集然后从实例 y 中获取属性 x 的值)和...方便性(代码可读性等) .
谢谢!
【问题讨论】:
标签: arrays perl data-structures hash object