in

Darkthread

黑暗執行緒

Browse by Tags

  • 關於IQueryable<T>特性的小實驗

    ASP.NET Web API支援OData,可以藉由URL加註$filter、$orderby、$skip、$top參數,對資料進行條件篩選、排序、分頁等加工(關於ASP.NET Web API OData特性,可參見KKBruce的 文章 )。而要啟用OData,有項重要前題是回傳資料型別必須為IQueryable<T>,而非一般LINQ常用的IEnumerable<T>。 對於List<T>、T[]等保存在記憶體的資料結構,傳回IQueryable<T>充其量只是要多一層.AsQueryable()的轉換程序,感覺不出要求IQueryable<T>的特殊用意...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 10-22-2012
  • 【茶包射手日記】LINQ過量載入陷阱及.NET記憶體限制

    今天處理了一件.NET服務故障案件。有個.NET開發的Windows服務,其任務為每隔幾分鐘查詢資料庫,取出待處理的作業項目,依其指示執行相關動作。狀況為資料庫仍有大量待處理項目,但服務未如預期取回資料逐筆消化。 幸運的是,程式設計時已加入頗為詳細的Log機制,很快地在Log檔發現記憶體不足錯誤訊息: System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.    at System.Data.SqlClient.TdsParser.ReadSqlValue...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 10-09-2012
  • 打破沙鍋-AJAX POST比GET效率差?

    故事要從點部落看到的 一篇文章 說起,該文章引薦了另一篇文章: 如何有效的提升網站的效能 - 12項建議 ,提出不少網頁前端設計上的效能提示,不過其中第8點: 在使用Ajax時,請盡量以GET的方式進行請求,以POST的方式將造成雙倍的要求次數 卻讓人有些疑惑,依我對HTTP GET與POST運作原理的理解,無法解釋Request數變兩倍的理由。於是在噗浪上 討論了一番 ,發現許多人跟我有相同的疑問,直到JavaScript神人-費拉諾蘭大公現身,指引眾人一條明路,在Yahoo Developer Network Best Practices for Speeding Up Your Web Site...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 06-09-2012
  • 當心LINQ搜尋的效能陷阱

    對於長年與資料庫、SQL語法打交道的開發者來說,LINQ語法有無比的親切感! 當要在List<SomeClass>集合中找尋特定物件時,寫成    form o in SomeList where o.Col1 == "A" && o.Col2 == "B" select o 是再自然也不過的事。乍看之下,反正List<SomeClass>已被存在記憶體,無須顧忌反覆查詢資料庫所產生的連線成本,而where條件比對又十分直覺易懂,感覺上是個不可多得的好做法。 但需留意一點: LINQ to Object的Where查詢不像實體資料庫可以靠Index加速或透過資料庫引撆演算法進行最佳化...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 10-19-2011
  • 再探ASP.NET大排長龍問題

    在 MaxConnectionsPerServer實驗 中,發現一個過去被忽略的問題: 原來同一個Session下, 啟用Session的ASP.NET網頁,因鎖定限制有可能出現單一時間內只能有一個Request被處理的情況 。換句話說,即便我們使用非同步方式同時發出10個對ASP.NET網頁的Request,若該ASP.NET網頁涉及Session,這10個Request將不會同步執行,而是10個Request排成一列,一個執行完再執行下一個。 回到上回MaxConnectionsPerServer 文章 最後一段的案例,IE端同時丟出16個Request: window.maxConnectionsPerServer...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 08-26-2011
  • ODP.NET OracleBulkCopy

    嫌棄使用OracleCommand批次更新大量資料效能不佳,爬文找到ODP.NET有個 OracleBulkCopy類別 支援將整個ADO.NET DataTable一次送至資料庫更新(與SQL 2008的 Table Value Parameter 有異曲同工之妙),於是做了Lab測試效果。 在Oracle資料庫建了一個TABLE BIGONE (N DECIMAL(6,0), T NVARCHAR2(64))資料表,在.NET程式中產生五萬筆資料,分別使用以下兩種方法寫入資料庫: 1) 建立OracleCommand,宣告OracleParameter以迴圈指定參數值執行五萬次ExecuteNonQuery...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 08-19-2011
  • Reflection執行效能測試

    在寫類似Code Generator的功能,遇到一個抉擇點: 若要將DataRow的各欄位逐一映對到資料物件的各欄位上,該使用Reflection還是Hard-Coding? 使用 Reflection 方式(PropertyInfo)讀寫物件屬性可大幅簡化程式碼複雜度,但需付出效能上的代價。如 先前文章 所提,隨著CPU的運算能力愈來愈強大,效能代價的負面影響也會愈來愈小。只是在查詢資料過程中,DataRow轉換成資料物件的程序會被連續大量執行,恐怕又得另當別論。例如: 查詢取回10萬筆DataRow,接著就得進行10萬次DataRow轉物件的動作,若每個DataRow有30個欄位,PropertyInfo...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 07-06-2011
  • ORACLE LIKE效能調校經驗一枚

    在我的認知裡,資料庫查詢在使用LIKE 'ABC%'時還是可以引用Index,但若變成LIKE '%ABC%',或LIKE '%ABC',就註定只能Table Scan,把整張資料表的每一筆撈出來比對。 最近幫忙看一個Oracle資料庫查詢效能不佳的個案,學到不同的處理經驗: SELECT C1, C2, C3, C4, C5, C6, C7 FROM myTable WHERE C1 = 'XXXX' AND C2 LIKE 'ABC%' AND C3 BETWEEN TO_DATE('2010/11/01'...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 12-06-2010
  • 關於SQL語法IN條件式的效能

    前些時候,在做資料查詢時發現ORACLE支援多欄位IN條件的簡化寫法: SELECT * FROM T1 WHERE (C1,C2) IN (SELECT C1,C2 FROM T2) 當下覺得它好簡潔,SQL沒有真是可惜,便在噗浪上 嘟嚷 了兩句,獲得一些回饋: 保哥 提到SQL有EXISTS可以取代, hector ♂ lee 則提醒IN可能存在的效能疑慮... 而這些資訊恰巧幫助我對於IN條件查詢效能有了新的體認,讓我不禁要說: 有網路社群真好! 應用上次學會的簡潔IN多欄位寫法,我搞出了類似以下的SQL語句。主要目的是要搜尋BOM資料表中有哪些零件不存在於PARTS資料表中,由於零件是用VENDER...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 10-28-2010
  • IISLog應用案例分享: 統計特定網頁的平均執行時間

    【案例需求】 使用者反應近來某些網頁程式"執行時間好像變久了"。OP希望由IIS Log中取得相關數字證實,釐清是程式效能變差需要調校,還是使用者需要一本金剛經培養耐性? 【分析程序】 取得網頁所在IIS近三個月的IIS Log,ex1002*.log, ex1003*.log, ex1004*.log 使用 Visual Log Parser (好物! 可參考保哥的 介紹文 )進行查詢,語法為: select to_string( date , 'yyyyMMdd' ) as logDate, to_string( time , 'HH' ...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 05-01-2010
第2頁,共4頁 (39個項目) < 上一頁 1 2 3 4 下一頁 >
Powered by Community Server (Non-Commercial Edition), by Telligent Systems