看板 Soft_Job 關於我們 聯絡資訊
作者: seiching (light) 看板: Soft_Job 標題: Re: [心得] 學界轉業界...google面試洗臉心得 時間: Wed Apr 19 23:09:17 2017 int flag; for(i=1;i<n;i++){ flag=0; if (i % 3 ==0) flag=1; if (i % 5 ==0) flag+=2; switch (flag){ case 0: System.out.println(i); break case 1: System.out.println("Fizz"); break; case 2: System.out.println("Buzz"); break; case 3: System.out.println("FizzBuzz"); break; } } 這樣會不會快一點點,使用int當flag,效能會略好,每個bit代表一種可能, 32 bit,可以有32種可能,後續擴充性較好,每個人習慣不同,謝謝大家指教了 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.251.182.5 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1492614560.A.012.html
BNMAA: 會喔,少印一次n 04/19 23:17
ACMANIAC: 會喔,很快就發現編不過 04/19 23:26
※ 編輯: seiching (60.251.182.5), 04/19/2017 23:28:11 ※ 編輯: seiching (60.251.182.5), 04/19/2017 23:33:56
cyshowen: 把int宣告在for迴圈裡面... 應該是快不了的 04/19 23:37
steve1012: 第一版一堆if沒特別好的感覺.. 第二版的flag可以在loop 04/19 23:40
steve1012: 外 04/19 23:40
※ 編輯: seiching (59.124.228.83), 04/19/2017 23:42:04 ※ 編輯: seiching (59.124.228.83), 04/19/2017 23:42:19
cutekid: 這樣的寫法 switch case 是 2^N 04/20 00:15
cutekid: 再多一個 7 加進來的話,就要 case 0 ~ case 7 了 04/20 00:16
stosto: 你要不要刪掉 既沒效能又難維護 04/20 02:35
seiching: 實際測了6次,n=65535,平均快了約1%,integer加法比string 04/20 10:54
seiching: 快一點點,switch影響不大 04/20 10:57
robber1234: 現在電腦很快,跑65535才幾次,又用C的話根本看不出差別 04/20 14:30
WashFreeID: 多了switch判斷 多用了變數 就算效能差不多 這樣寫的 04/20 19:07
WashFreeID: 風格也不好吧 04/20 19:07
lgates: 我記得早上看我有看到一個噓... 04/20 20:40
lgates: 抱歉 我看到刪文的了... 04/20 20:41
stosto: Branch超多,預測失敗就會更多,你說效能差不多是因為你沒 04/20 22:07
stosto: 有用到字串串連,同樣直接輸出字串這個效率比較差 04/20 22:07
stosto: 第二個是維護性,這應該不需要討論了,這個擴充性非常差 04/20 22:08
stosto: 寧願效能差好維護,不然就是效能贏過很多,第二點達不到就 04/20 22:09
stosto: 選第一點 04/20 22:09
※ 編輯: seiching (60.251.130.137), 04/21/2017 10:30:52