2011-11-10

列表(List)與字典(Dictionary)的比對效能

[問題]
某個 windows service 時常處於 CPU 忙碌、佔據大量記憶體,而且執行速度極慢? (應該說是執行結果跟不上現實需要)

[原因]
幾經測試,原來...,現有的 code 是用上 List().Contains 的方式來比對。
以前沒那麼慢,那是因為要比對的歷史記錄並不多,而累積到現在,赫然發現已有四十七萬多筆了。再加上判斷二千多筆資料是否存在在歷史記錄之中,比對數就用上了 2k * 470k 這種等級。難怪CPU那麼忙,而且要花費許多時間。

[step]
知道原因後,二話不說,直接改寫成 Dictionary,利用 Dictionary 來比對。
結果,執行一次時間由數十秒變成1~2秒,CPU 偶爾上揚一下 -- 表示有在做事。
這... 也不去細究源由了,算是補上一個坑,路更平了。

2011-11-09

消失的時間 -- ASP.Net 呼叫 remoting call

[寫在前面]

(1) 在 IIS 下,aspx 接到 request 後,再以 remoting call 的方式,呼叫一 windows service(主要是在本機上); 而這個 windows service 實做了所有的邏輯,並且會定時(如: 每一分鐘或每五分鐘)從 database 中重新載入資料形成 memory cache;並將結果回傳給 aspx,再由 aspx 組成網頁或字串以回應。
(2) aspx 與 windows service 會記錄各自所消耗的時間。
(3) environment: Windows 2003, .net framework 2.0 sp1.

[問題 & 狀況]
(1) aspx 記錄了呼叫 remoting call 到得到結果的時間,在某些時候,會遠超過 windows service 處理該次的時間。
      而其中,消失的時間那裡去了呢?
      會是因為 thread pool 滿了,而在等待嗎? CPU 太忙所導致嗎?
      但是看起來,系統資源似乎還綽綽有餘啊!
(2) 而這種現象,在流量大(QPS高)時,尤其明顯。
(3) 有些機器很嚴重,但有些機器卻還可以接受。(ps: 機器等級差不多,執行內容都相同。)

2011-11-01

customize setting of new layout/UI (Google plus style) of Google Reader

Google Reader 是我常用的瀏覽資訊服務,它讓我在一個畫面看盡了我有興趣(訂閱RSS)的網站的更新文章,而不用煩惱"不知何時該去巡視一遍網站"、"到底何時有新文章"。

但由於 Google Reader 預設的文字大小、以及版面的設計佔了許多面積,於是在 Firefox 與 Chrome 裡,我都使用了 Stylish 這個擴充元件,並且在 userstyles.org 安裝了一些可以改變 Google Reader 版面的 script code。後來,我也試著自己去修改其中的 code。

但在今天使用 Google Reader 時,Google  Reader 被套用了 Google+ style 產生了新的版面,所以之前的就不合用了。

試著自已修改了一下,還不錯,分享如下: