[问题] 问个基础问题,效能怎样会高

楼主: sec5566 (sec)   2016-08-30 16:54:38
之前面试一家考试有一题是
两个程式哪个比较快
两个记得只差在
一个阵列是a[2][5]
一个是a[5][2]
这两个真的有差吗?
有一段时间了 题目其他部分不太记得
只记得其他行都一样
另外主要想问怎样的程式效能比较高
是程式比较短?还是循环少?
还是差在变量型态?
我对这方面真的不知道耶
估过狗发现很少有资料
不过记算处理时间的文倒是满多的
重点不知道怎样变短
就算得到时间也不知为何
作者: damody (天亮damody)   2016-08-30 17:08:00
Cpu cache
作者: sunev (Veritas)   2016-08-30 17:13:00
row major
作者: Eleina (艾琳娜)   2016-08-30 17:32:00
array 在 mem 中的储存方式 -> 加载 cache 哪个容易 miss
作者: carylorrk (carylorrk)   2016-08-30 17:41:00
这两个写法在内存的储存方式不是一样吗?a[2][5] 跟 a[5][2] 跟 a[10] 都是连续内存配置吧?然后如果 loop 都是先动 col 再动 row,就是顺序存取?
作者: nowar100 (抛砖引玉)   2016-08-30 19:06:00
跟顺序存取比较无关 关键是他怎么从mem load to cache的事实上目前的a[0][0] a[1][0] 这种方式也不会是顺序存取
作者: wtchen (没有存在感的人)   2016-08-30 19:57:00
不懂,二维矩阵宣告(非malloc)默认不会用连续空间?如果是用**p宣告二维阵列我可以理解可能不会连续
作者: Schottky (顺风相送)   2016-08-30 20:16:00
我倒觉得问题应该是出在原 PO 不记得的程式码里
作者: bluesoul (忙死你老爸)   2016-08-30 20:20:00
不要做多余的事情,程式就会快
作者: wuliou (wuliou)   2016-08-30 23:18:00
速度有差啊 前三楼的原因
作者: stupid0319 (征女友)   2016-08-30 23:19:00
买I7以上电脑
作者: james732 (好人超)   2016-08-31 00:02:00
话说这种东西应该跟compiler与hardware实作也会有关系?
作者: EdisonX (卡卡兽)   2016-08-31 00:04:00
是 cache 没错,像是 matrix 相乘,加快的方式就是把第二个 matrix 转秩后再相乘,便是用 cache 特性.若取出的资料和上一笔资料都在附近(locality),cache率高.https://www.youtube.com/watch?v=IFWgwGMMrh0(所以才有 matrix mult. blocking 算法 )
作者: ronin728 (浪人)   2016-09-04 12:20:00
给了关键字先Google,看不懂网络文章再来问,这是常识
作者: wtchen (没有存在感的人)   2016-09-04 15:10:00
问一下,有没有办法在跑程式的过程中侦测到cache miss?不是perf那种,而是读取data的当下发现不在cache里还是perf有函式库可以套用到C program里面?
作者: wope (独立黑色色彩)   2016-09-13 00:41:00
edisonx 正解malloc也有类似的问题

Links booklink

Contact Us: admin [ a t ] ucptt.com