星期二, 5月 12, 2009

受不了Delphi 2009 的 TClientDataSet

在初接觸到程式設計時,那時對於Delphi 5的Midas架構覺得很驚奇,3-Tier、離線模式、Load Balance等功能,都讓我在中歷資策會學習期間,每一天,每一晚都過得很充實!當時的生活真的是累了就睡,起床就學,寫到這就想起好多美好時光,也要感謝很多老師,尤其是教Delphi的DoDo(miss 黃)、連sir,還有一位用課外自己時間教java的王Sir!

在出了社會接觸的幾個產品,多多少少都會用到CDS,尤其是拿來當一些資料的暫存特別好用,可以用資料庫的方式進行一些必要的操作。但一直以來都覺得它的速度實在不快,以往嚐試著用fastmm或是試著自行pack data等方式來改善,但成效總是有限!


在經歷近二年.NET的洗禮,最近又重新接觸MIDAS後,終於有了新的結果!首先以本機進行測試,從PROVIDER餵資料給CDS,這段時間花了9成五以上的時間,有了這樣子的體認,即可以有個初步的方向,即丟掉笨重的data結構。在重新檢視了專案中CDS的用法,發覺有大半的程式只是用來捉取資料(查詢,觀看)取回來的資料並不需要進行編修後再更新,也就是不用保有原cds的資料結構,只要想辦法手動"序列化(serialization)"這段不需要編修的Data資料,讓他到CLINET時可以正確還原到能夠檢視即可!經由這樣子的調整與改變,在有較大量資料的查詢下,速度至少快了將近一半!


寫到好像問題都解決了,沒有什麼受不了的!但試用了d2009後,又發覺cds二個問題

  1. Locate中文會不正常
  2. aggregates中 使用像 min(field1) 此時若field1是widestring會不正常.但string是正常的
說起來這二點應都是改成unicode後才改壞的,爬了一下文發覺也有蠻多人反應這樣子的問題! 而在 ktop上看到一則很久前的帖子發覺或許這個問題己經存在很久.只是之前都沒遇過而己!真希望update4(or 10)能快出來,此二點就先不管了,日後需要正面衝突使用時再來傷腦子了

0 個意見: