[問題] 如何學習增進效率的知識與技術?
大家好
晚輩非本科系畢業
有幸在一間小軟體公司工作了一陣子後
深深覺得自己相關底層知識不足
所以上來請教如何增進該方面的知識
公司做的東西與電腦圖學 互動多媒體開發有關 都是用c++
不用直接回答我下面的問題
我比較傾向告訴我方面 然後讓我往正確的方向找資料
現在感覺是自己不知道找資料的方向正確與否導致浪費很多時間
1. 記憶體問題
struct A
{
char a;
int b;
}
請問sizeof(A)是多少?
我後來才知道有alignment這東西
可是這些重要的東西為何在一些c++的書(螞蟻書)都沒提到
還是我沒注意到有這東西
為什麼記憶體特別要對齊 他對整個程式的運作影響到底是什麼?
另外在字串的一些處理
公司人告訴我盡可能避免使用strdup or strcmp之類的東西
因為在電腦內部要花額外的時間處理記憶體的東西(有這回事?)
我以為只有寫個迴圈比較每個字母
所以我們做法是把字串Hash成一個數字
用單純數字來比較字串是否一樣 所以這樣比較快?
但是我們在做Hash這些步驟的時候難道花的時間沒有直接叫strdup這些來得多嗎?
2. 演算法計算?
因為在處理圖學的東西要處理大量的向量計算
例如我們都知道向量長度是每個方向的量平方開根號
例如有次我要比較一些向量長度
我這麼做完以後 公司的人告訴我
其實比較長度的時候平方完直接比較就可以了
而不用脫褲子放屁再去開根號 浪費很多時間
(我猜這邊應該只是純粹數學 是我自己笨)
但是以後維護的人不會去想為什麼這邊不用開根號嗎?
另外有提到除法與減法的operator比乘法跟加法慢?
為什麼一樣對我們人類來說簡單的算數
在電腦上會有速度上的差異?
這些差異到底是什麼造成的?
大概類似是這樣的問題
請問要從哪個方向找資料或書去精進呢 (如果有推薦的書的話)
自己是數理類科系畢業 沒有太多工程背景
對於c++領域只是新手
自己看了C++的書好像也沒有講到類似的東西
我知道現在電腦其實都很快 根本感受不到這些計算的差異
但是因為主要開發高效能的一些軟體
所以任何一點的記憶體(效能)都不能浪費
希望版友能多給予我一些方向 謝謝
如有任何問題請發問 我會盡可能回答
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 98.202.190.56
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1491408626.A.0D1.html
推
04/06 00:18, , 1F
04/06 00:18, 1F
→
04/06 00:19, , 2F
04/06 00:19, 2F
→
04/06 00:30, , 3F
04/06 00:30, 3F
→
04/06 00:32, , 4F
04/06 00:32, 4F
→
04/06 00:33, , 5F
04/06 00:33, 5F
※ 編輯: Cosmology (98.202.190.56), 04/06/2017 00:41:04
→
04/06 00:41, , 6F
04/06 00:41, 6F
推
04/06 04:06, , 7F
04/06 04:06, 7F
推
04/06 04:10, , 8F
04/06 04:10, 8F
→
04/06 04:10, , 9F
04/06 04:10, 9F
推
04/06 05:40, , 10F
04/06 05:40, 10F
→
04/06 05:41, , 11F
04/06 05:41, 11F
→
04/06 09:04, , 12F
04/06 09:04, 12F
→
04/06 09:05, , 13F
04/06 09:05, 13F
→
04/06 09:06, , 14F
04/06 09:06, 14F
推
04/06 09:09, , 15F
04/06 09:09, 15F
→
04/06 10:16, , 16F
04/06 10:16, 16F
→
04/06 10:16, , 17F
04/06 10:16, 17F
→
04/06 10:52, , 18F
04/06 10:52, 18F
→
04/06 10:52, , 19F
04/06 10:52, 19F
→
04/06 11:02, , 20F
04/06 11:02, 20F
→
04/06 11:02, , 21F
04/06 11:02, 21F
→
04/06 11:03, , 22F
04/06 11:03, 22F
→
04/06 11:04, , 23F
04/06 11:04, 23F
推
04/06 11:04, , 24F
04/06 11:04, 24F
→
04/06 11:05, , 25F
04/06 11:05, 25F
→
04/06 22:05, , 26F
04/06 22:05, 26F
推
04/07 02:57, , 27F
04/07 02:57, 27F
推
04/07 06:29, , 28F
04/07 06:29, 28F
→
04/07 06:29, , 29F
04/07 06:29, 29F
推
04/07 08:57, , 30F
04/07 08:57, 30F
→
04/07 08:57, , 31F
04/07 08:57, 31F
推
04/07 18:30, , 32F
04/07 18:30, 32F
推
04/07 19:23, , 33F
04/07 19:23, 33F
→
04/07 19:23, , 34F
04/07 19:23, 34F
→
04/07 19:24, , 35F
04/07 19:24, 35F
→
04/10 15:04, , 36F
04/10 15:04, 36F
推
04/15 09:44, , 37F
04/15 09:44, 37F
→
04/15 09:44, , 38F
04/15 09:44, 38F
推
04/16 13:40, , 39F
04/16 13:40, 39F
→
04/16 13:41, , 40F
04/16 13:41, 40F
→
04/16 13:42, , 41F
04/16 13:42, 41F
→
04/16 13:42, , 42F
04/16 13:42, 42F
→
04/16 13:44, , 43F
04/16 13:44, 43F
→
04/16 13:45, , 44F
04/16 13:45, 44F
→
04/16 13:45, , 45F
04/16 13:45, 45F
→
04/16 13:45, , 46F
04/16 13:45, 46F