Dav*_*d B 3 arrays perl hash object data-structures
我一直在想这个,但从来没有真正深入了解它.
情况是这样的:我有一组相对较大的数据实例.每个实例都具有相同的集合或属性,例如:
# a child instance
name
age
height
weight
hair_color
favorite_color
list_of_hobbies
Run Code Online (Sandbox Code Playgroud)
通常我会将一个孩子表示为哈希,并将所有孩子放在哈希哈希值(或哈希数组)中.
这种方法总是困扰我的是我并没有真正使用所有孩子(内部哈希)具有相同结构的事实.如果数据真的很大,似乎可能浪费内存,所以如果每个内部哈希都是从头开始存储的,那么键名的名称似乎比数据本身要多得多......同时请注意当我构建这样的数据结构时,我经常将nstore它们用于磁盘.
我想知道在这个角度创建一个子对象是否更有意义,即使我不需要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";
Run Code Online (Sandbox Code Playgroud)
回想一下我的主要关注点是空间效率(存储时的RAM或磁盘),时间效率(即加载存储的数据集然后从实例y获取属性x的值)和......便利性(代码可读性等).
谢谢!