跳到主要內容

演算法與資料庫的拉鋸戰

上禮拜剛從研究所老闆那邊接手一份工作過來,
內容大概是這樣子的,
要處理研究所學長當初建的論文檢索系統,一些 error data 的 lose value 回復

學長是有建議要不要整個重抓
可是苦於程式部分可能修改完後不知道還有哪裡錯,
所以決定用既有的 DB table 去補足這些 error data lose value

剛開始以為很簡單,就是簡單的 join 比對咩

所以假日晚上想說這很快就可以解決了,把 code 大致寫好後,
嘿嘿嘿,準備啟動了!

耶耶? o_0?

怎麼畫面一直出不來?我程式寫錯了嗎?

想說不會吧!重新寫了一個比較小的程式去叫資料庫,竟然也花了 30 秒!

耶耶?

怎可能花這麼久呢? o_0?

跑去問了一下專家們,
專家給我建議是你要不要寫行隨時看看程式跑到哪,
接受專家的建議改了一下程式下去跑之後才發現,我的程式沒有錯,
只是資料量太大了!

如果要算我程式的 big-O ,那大概是 10*10w*40w 囧>?

於是到這邊我就開始在想,不會是我演算法寫的太爛吧?
之前都是自己寫資料庫自己玩一玩,沒碰過大資料
如果到外面大公司那麼多的資料可能比這更多,還是跑這麼慢怎辦?

於是又開始問專家們意見,

專家跟我說要不要整個 table 砍掉重練,
可能是 table structure 當初建得不好。

也有建議要不要用 hash 概念來做
受惠還滿多的,

不過想到說這樣大工程不適合自己一下子馬上動手改,
還是跟老闆商量看看好了,

沒想到老闆提出倒回來的想法,

big-O 馬上變成 10w*10w

真是天壤之別,雖然說還是很大 囧>"

可是比我那爛方法快上整整 40 倍,

又上了一課了!我果然是嫩逼! XD"

留言

這個網誌中的熱門文章

杉林國小數位教學

這是上了研究所所修習的一門課,老師希望我們到偏遠地區的國小, 運用我們所學教那邊的小孩子,減少數位落差, 而我們那天的目的地則是位於旗山鎮杉林鄉的杉林國小。 要說到杉林國小之前,先來說說它的歷史, 杉林村隔壁村是木梓村,同樣也有一間木梓國小, 但是木梓國小由於人數不足的關係,已於幾年前跟杉林國小併校, 木梓村的小孩每天都會由校長開車到該村莊接受,全程來回四公里左右。 杉林國小會不會也有人數不足面臨被併校的危機? 答案是不會的! 由於地理以及族群的因素,使得杉林國小有基本的學生人員, 楠梓仙溪一隔隔出了不止地理上的界線,也隔出了兩個族群間的隔閡, 客家子弟不會到杉林村的閩南小學上課, The same,杉林村跟木梓村的小孩也不會到上平國小上課, 但是偏偏客家卻是杉林鄉的大宗! 所以一河之隔,杉林村與木梓村似乎變成少數的閩南族群。 不過這邊的居民對於杉林國小的客家老師倒是出乎我們意料的客氣。 杉林村跟上平雖然只隔著一條楠梓仙溪,卻是兩個不同的世界, 如果上坪的房子建設跟都市差了有十年的時光以上, 那麼杉林可能就是二三十年前的台灣早期農業社會。 在杉林村住家幾乎看不到所謂的透天樓房,如果看到有樓房的, 就可以稱得上當地的有錢人,聽聞校長講, 有學生的住家進去還不是平常我們所看到的水泥地,而是一堆爛泥巴堆砌而成的地面。 這裡是一個看不見未來的村落! 不僅土壤呈現酸性一年四季只有一季可以收成, 就連緊靠楠梓仙溪也探不得地下水源,這邊的家庭只要沒有耕作就沒有基本收入, 錢大多都是靠著打零工而來。 但打零工來的錢卻鮮少花在孩子的教育上,不是都拿去買酒就是買檳榔,甚至是毒品! 這裡的人拜訪時大多都有一個相同的特徵,一口的血色以及發黃稀疏的牙齒。 前陣子還有高捷有工人缺可以接接臨時的粗工,現在高捷完成了, 這邊的失業率是另一個問題的開始。 數位教學的過程中,接觸小朋友天真卻又現實殘酷的跟我們說, 我爸媽都說讀到大學都不一定找得到工作了!那為啥要繼續唸書唸上去呢? 這邊不是沒有學習的楷模,只是這樣的榜樣太少了, 少到讓他們覺得人生一輩子就是這麼過下去了! 杉林村跟木梓村兩個村莊合起來 1747 人,只有兩位學習的楷模, 一位目前任教於高師大擔任助理教授,一位是旗山分局的局長。 公車這裡一天只來二至四個班次,但對於這邊的人可能連車錢都是個負擔。 曾有一段颱風時間,杉林大橋被河水沖斷, 這...

【NS】The Snack World (1)

這片從 NDS 就一直有在注意了,是跟妖怪手錶一樣公司 LEVEL 5 所開發的。但是因為手上除了 TV GAME 還有其他太多的休閒活動了,所以那時候沒購入這片,只知道去日本的時候,發現這片周邊商品特多,而且在小孩子界好像有一定的定位! 這次趁著 SWITCH 有同捆 DLC 跟畫質有提升,所以就入手了! 有玩過妖怪手錶還是閃電 11 人的,一定會覺得這色調跟風格真的很 LEVEL 5 ,故事也一樣很ㄎㄧㄤ。 玩家扮演其實不是封面上的團長,而是自己捏的人物,然後某一天倒在某王國前面被救起,然後遇到很ㄎㄧㄤ的公主,跟女兒奴的國王,所以就被拐著拐著去各大危險區域,取回公主想要的東西。 順帶一提,團長也是公主癡,故事第二關─被團長拉著為了公主的肌膚,而不得不去取回某保養品。 而遊戲類型類似聖劍傳說那樣 ARPG 的玩法,不過又細分故事跟冒險兩大選擇,每個選擇進去是一個關卡一個關卡,看自己今天想要解決啥,可以重複挑戰。 出發前可以調整自己的裝備,每次共可帶六個武器跟兩個補助用品,而個別的武器對個別的怪物有一定的傷害力跟特性,需要拿對武器打怪物才會比較痛。戰鬥中可用 X 或是 Y 按鈕施展普攻還是特殊攻擊,但玩到目前看來,即使是同樣一把武器,好像也有不同的招式。 隨著故事關卡進行,玩家也可以解鎖製造裝備。裝備的材料自然就是從故事關卡或是冒險關卡打怪和過關蒐集來的;而繼續玩下來,可以解鎖升級裝備能力跟解鎖顏色,創造獨一無二自己的紙娃娃人形。升級需要吃同樣的武器或是裝備,而且只有能力值上的改變,玩到目前看來裝備一開始的一些特性,似乎透過升級沒辦法自由選擇想要配哪種特性,所以後期過關看起來,似乎得準備好多套不同屬性的裝備,也難怪有些人會後期就是個農的遊戲! 既然是農的遊戲,所幸除了一些特定關卡就是固定路線地圖外,地下城的關卡會因為每次進入而有不同的樣貌變化,頗有 D3 打寶跟過關的感覺。 而 BOSS 的展現也很有魄力!像是故事第一章節的 BOSS ─ 梅杜莎! 遊戲還提供了附近玩家多人連線跟網路連線,而沒有朋友連線的你,也可以透過裡面的 SNACK 寵物幫忙你打怪!例如 SEXY 的神燈三精靈 XD" 遊戲ㄎㄧㄤ的地方還不只如此,像是玩到目前有發...

【走!桌遊去!】契約石 Charter Stone 十二場完食微心得

Besides this picture, all other pictures copied from   Charter Stone Website   and copyright by the original owner. 打完的心的是─終於不用徹夜熬夜打這遊戲了!。:.゚ヽ(*´∀`)ノ゚.:。(灑花) 為啥要熬夜呢?說真的,要聚集六人的時間都可,對於上班後的我們真是一項非常困難的事情,尤其大家又更有自己的私人生活,所以能夠跑完十二場真的是讓人非常感動的一件事情! 所以本篇將帶大家大致簡單瀏覽一下,契約石的大概在玩些啥麼。 玩家所扮演著是被永世之王招喚來的六人角色之一,如果你不到六人你也可以開自動人格。打完有大致上看了一下國外玩家的心得, 比較建議開到六人,因為如果少一人的話,遊戲本身有一些機制玩不到 ;但是就算這麼說,也不一定代表招集到六人,你就可以玩到完全的機制。對了!上面的玩家腳色你可以自己命名,十二場遊戲你都是扮演這位角色。 為何會這麼說呢?因為這是一款傳承性的遊戲,啥叫傳承性的遊戲呢? 遊戲內容跟規則,會根據你們大家中間的選擇,會有不同的變化跟規則改變 ;另外,契約石我覺得比較特別的地方是,他在訴說著一個故事,而我們就像生活在裡面的人! 如同剛剛提到的,我們是天選之人,被指派要來開墾這塊空無的大陸!每個人都會有自己的一塊領地,你也會跟別人互通有無,互相往來。 遊戲的機制非常的簡單,就是 (1)放人 或是 (2)收人 這樣而已。當然會因為你擺放的工人位置不同而有所不同的效果。而一開始僅提供基本的資源行動可踩,真的就像在拓荒一樣,我們第一場開心的採南瓜、砍木‧‧‧‧等,即使單調但也玩得很開心! 慢慢著當你收集完資源後,你就可以把這些資源轉換成建築物,而這也是遊戲比較特別的地方!所有的建築物都是上面這張小卡,然後將貼紙撕下來黏貼到遊戲圖板上。 十二場下來,這塊圖板是你們獨一無二創造的遊戲! 而遊戲的資源跟金幣也非常的精緻,讓人用起來非常爽快! 除了遊戲圖板會依據你的行動而改變外,規則也會因為每場的行動跟當局結果,而有所改變,這時候就會拿出對應的規則貼紙,將其貼到規則書上!所以─ 沒有貼出來的規則就是你沒...