我在10000文件中存储了10000 * 5000的矩阵,其值为1和-1。
h5open("/my path/data.h5", "w") do file
write(file, "a", a) # alternatively, say "@write file A"
花了400 MB。这合理吗?
答案 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会自动转换类型以匹配。如果您多次执行此类操作,此类转换将导致性能损失,从而导致多次转换。但是,你仍然可以存储它,然后在加载后重新转换它。