朱莉娅:h5文件的大小

时间:2016-07-18 14:39:09

标签: file julia

我在10000文件中存储了10000 * 5000的矩阵,其值为1和-1。

h5open("/my path/data.h5", "w") do file
    write(file, "a", a)  # alternatively, say "@write file A"

花了400 MB。这合理吗?

2 个答案:

答案 0 :(得分:4)

这正是您应该期待的,只要这些是Float64个数字存储。每个Float64个数占64位= 8个字节。 10000 * 5000 * 8 = 4亿字节= 400 MB。

答案 1 :(得分:0)

如果要减小大小,还可以考虑生成值并将其存储为另一种类型,例如using System.Linq; using System.Collections.Generic; private void button1_Click(object sender, EventArgs e) { List<int> numbers = new List<int> { 2, 6, 6, 5, 8, 1, 3, 3, 9, 3, 6, 1, 3, 9, 1, 7, 8, 6, 8, 1, 1, 4, 4, 2, 8, 4, 5, 4, 6, 10, 1, 4, 3, 1, 2, 8, 4, 5, 9, 2, 2, 4 }; int target = 27; sum_up(numbers, target); } private static void sum_up(List<int> numbers, int target) { sum_up_recursive(numbers, target, new List<int>(), 0); } private static void sum_up_recursive (List<int> numbers, int target, List<int> @partial, int index) { int s = @partial.Sum(); if (s >= target && @partial.Count == 7) { Console.WriteLine("sum(" + string.Join(",", partial.ToArray()) + ")=" + target); } else if (s < target) { if( index + 7 > numbers.Count ) { return; } else { List<int> partial_rec = numbers.GetRange(index, index + 7); sum_up_recursive(numbers, target, partial_rec, ++index); } } } (将占Int8空间的1/8)。请记住,如果你在矩阵中添加,乘法等任何东西乘以另一种类型的对象,那么Julia会自动转换类型以匹配。如果您多次执行此类操作,此类转换将导致性能损失,从而导致多次转换。但是,你仍然可以存储它,然后在加载后重新转换它。