程序临时计算的大量数据是放在内存中还是放在数据库中好

HW140701
博客专家认证
2016-12-20 09:36:23
在程序中间运行的过程中,需要申请一个三维数组数据类似于double A[2000][1000][500],需要开辟2G以上的内存来存储。所以内存的限制比较大。有人建议说把这个数据存储在数据库中,需要哪一条数据就去根据下标单次查询。那种方式更好?或者有其他的优化方法
...全文
1092 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-12-20
  • 打赏
  • 举报
回复
当程序需要使用比如2GB~1TB左右的存储时,最简单的办法恐怕得是用文件读写模拟内存读写了吧。windows参考_fseeki64函数,linux参考fseeko64函数。
FILE *fA;fA=fopen("A","rb+");_fseeki64(fA,10000000000i64*sizeof(int),SEEK_SET);fputc(fA,0);//int A[10000000000];
int B;
_fseeki64(fA,9999999999i64*sizeof(int),SEEK_SET);fread(&B,1,sizeof(int),fA);//B=A[9999999999];
_fseeki64(fA,9999999999i64*sizeof(int),SEEK_SET);fwrite(&B,1,sizeof(int),fA);//A[9999999999]=B;
fclose(fA);
ID870177103 2016-12-20
  • 打赏
  • 举报
回复
可以使用页面文件,会比自己写文件高效
HW140701 2016-12-20
  • 打赏
  • 举报
回复
引用 7 楼 bravery36 的回复:
要看你对数据的实时性是否有要求,还有就是2g内存对你的机器而言意义大不大。如果说在内存能支持住的情况下,而且不需要数据库就能完成,我觉得内存比较好,数据库一般是集群优势大。
所以现在我难以取舍
bravery36 2016-12-20
  • 打赏
  • 举报
回复
要看你对数据的实时性是否有要求,还有就是2g内存对你的机器而言意义大不大。如果说在内存能支持住的情况下,而且不需要数据库就能完成,我觉得内存比较好,数据库一般是集群优势大。
mLee79 2016-12-20
  • 打赏
  • 举报
回复
nand flash 都128G了, 6G就是内存..
GKatHere 2016-12-20
  • 打赏
  • 举报
回复
引用 4 楼 mLee79 的回复:
手机都6G内存了, 2G就不是个事..
手机的6G内存 好像更像USB. 移动硬盘这样的闪存吧,而不是真正的主板上的那种内存。
mLee79 2016-12-20
  • 打赏
  • 举报
回复
手机都6G内存了, 2G就不是个事..
fefe82 2016-12-20
  • 打赏
  • 举报
回复
这不是好不好的问题,内存够大就存内存,不够大就得想别的办法。
paschen 版主 2016-12-20
  • 打赏
  • 举报
回复
那就放数据库吧,如果规模也不太大,自己管理也行,可把暂时不用的先存到硬盘
HW140701 2016-12-20
  • 打赏
  • 举报
回复
在程序的过程中,有循环嵌套运算
HW140701 2016-12-20
  • 打赏
  • 举报
回复
引用 10 楼 zhao4zhong1 的回复:
当程序需要使用比如2GB~1TB左右的存储时,最简单的办法恐怕得是用文件读写模拟内存读写了吧。windows参考_fseeki64函数,linux参考fseeko64函数。
FILE *fA;fA=fopen("A","rb+");_fseeki64(fA,10000000000i64*sizeof(int),SEEK_SET);fputc(fA,0);//int A[10000000000];
int B;
_fseeki64(fA,9999999999i64*sizeof(int),SEEK_SET);fread(&B,1,sizeof(int),fA);//B=A[9999999999];
_fseeki64(fA,9999999999i64*sizeof(int),SEEK_SET);fwrite(&B,1,sizeof(int),fA);//A[9999999999]=B;
fclose(fA);
好的,谢谢 ,我去看看
FD_2013 2016-12-20
  • 打赏
  • 举报
回复
放到文件里, xxx.bat

64,678

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧