PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
C_and_CPP
[问题] 同时对array的多个位置取值的方法
楼主:
doasgloria
(青柳立夏)
2020-04-13 21:12:18
各位版友大大们好
小鲁C++很差 很久没碰
只是需要很有效率实现某个功能
Python的速度感觉还不敷使用
想洽询看看C++是否有更快的方法 !
想做的是这样
有两个3维的array A跟B, 大概像 int [x][y][z]
x,y,z都很大可能到几千~
A一开始是空的 B的每个位置都有整数数值
要把A的每个位置, 根据已经有的索引
用B的某个位置的数字填进来
比如 A[0][0][0] = B[100][200][300]
每个位置之间的对应是属于随机分布~
直到 A[x][y][z], 把A整个填满~
想问问 如果要用比三层for循环有效率的方式
怎样做可以最快呢 @@?
感谢大大的帮助 >///<
作者: LiloHuang (十年一刻)
2020-04-13 22:38:00
numba 试了还是不行?如果能跑多个 thread, 就用用 tbb::parallel_for 看看但可能得特别避开一下 false sharing 造成的性能损失
作者: hsnuyi (羊咩咩~)
2020-04-13 23:52:00
首先 把A做出来后下一步是啥? 有一定要建立A吗? 直接读取B不行吗?再者 你的随机是怎样的随机?最后 B有可能超过10亿个元素 你有试过了吗?
作者:
SocketAM2
(AM2)
2020-04-14 00:15:00
我的直觉是memcpy再random swap如果你的随机不需AB一一对应那应该可以更简单一点
作者:
loveme00835
(发箍)
2020-04-14 10:39:00
你知道这样一个阵列有多大吗?xD
作者:
qscgy4
(有点厉害)
2020-04-14 11:30:00
我觉得你要先担心你的内存够不够?
作者:
pziyout
(pziyout)
2020-04-14 15:26:00
假设每一维度有 3000 个,三维共有 27x10^9 个整数,两个阵列的整数共需 208x10^9 字节,你的内存够大吗?
楼主:
doasgloria
(青柳立夏)
2020-04-14 16:24:00
不好意思没写清楚 实际上大概是 3500*3500*3 例子有误有用NUMBA做 PYTHON试过最快的是NUMBA 但还希望加快
作者: LiloHuang (十年一刻)
2020-04-14 16:57:00
听闻先前提的 numba 效率很快备感欣慰, 再试试 tbb 吧
https://software.intel.com/en-us/system-studio
Intel VTune 有免费 license 也可以拿来 profiling
作者:
plsmaop
(plsmaop)
2020-04-15 19:33:00
如果是连续的话就 memcpy 啊啊没看到是随机分布,抱歉
作者:
lc85301
(pomelocandy)
2020-04-16 13:27:00
怎么听起来有点 sparse matrix 的感觉?
作者:
MOONRAKER
(㊣牛鹤鳗毛人)
2020-04-18 16:04:00
就讲了要塞满怎么可能sparse
继续阅读
[问题] 现在网络会用C++写吗
ucrxzero
[问题] 求c语言教学手册第四版光盘
ricky860206
[问题] 简易Web Server不用第三方library
famous727
Re: [问题] 请问我这个程式能用循环做吗?
pziyout
[问题] ASCII 编码
bell1708
Re: [问题] porting issue(32bits-->8bits)
MasterChang
[问题] 有关linux fanotify在zfs上的使用
GhriS
[问题] 利用factory pattern避免constructor失败
ken771209
[问题] 用fscanf读取txt档问题
bell1708
Re: [问题] 请问我这个程式能用循环做吗?
loveme00835
Links
booklink
Contact Us: admin [ a t ] ucptt.com