• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Các kỹ thuật tối ưu ứng dụng

Các bài viết hướng dẫn và tham khảo chung, không thuộc ngôn ngữ nào

Điều hành viên: vietluyen

HaiPT
VIP
VIP
Bài viết: 252
Ngày tham gia: T.Tư 07/09/2005 4:02 pm
Đến từ: Hải Phòng
Has thanked: 1 time
Been thanked: 12 time
Liên hệ:

Các kỹ thuật tối ưu ứng dụng

Gửi bàigửi bởi HaiPT » T.Sáu 02/05/2008 10:42 am

Tên bài viết : Tối ưu ứng dụng áp dụng cho mọi ngôn ngữ
Tác giả : haipt (http://WWW.CAULACBOVB.COM)
Level : ADVANCE


Để tối ưu một ứng dụng chúng ta cần xác định :

I.Tối ưu để giải quyết yêu cầu gì :
A.Thời gian thực thi tổng thể lớn quá mức cho phép
B.Khách hàng cảm thấy chậm do ứng dụng chậm phản hồi, hay bị not responding...
C.Giảm kích cỡ ứng dụng ( :) không bàn vì không cần thiết )
II.Tối ưu bằng phương thức nào? Chi phí tối ưu so với lợi ịch đạt được
A.Cải tiến lại thuật toán,công nghệ sử dụng ( soft ware )
B.Mua phần cứng mạnh hơn( hard ware)
Chúng ta cần xem xét kỹ để quyết định, với đa số các bài toán , sự chênh lệch thực thi của 1 chương trình dùng Int và long là hoàn toàn không đáng kể ,đã qua rồi cái thời mà lập trình viên phải tiết kiệm từng byte khi lập trình ...chính các bậc tiền bối đã cho chúng ta thấy 1 bài học đắt giá qua lỗi Y2K2 để lại cho hậu thế >:) Do vậy không nên bận tâm với việc dùng hàm có $ hay không , int hay long... trừ khi bạn đang dùng máy 80286 , với 4MB RAM :))
Với đa sô bài toán, thì hình thức tối ưu đơn giản và hiệu quả nhất là nâng cấp phần cứng mới , đặc biệt là các ứng dụng đòi hỏi bộ nhớ lớn .
Với các bài toán mà hiệu quả đạt đc lại nhỏ hơn chi phí tối ưu + bảo trì sau này thì biện pháp hiệu quả nhất là không làm gì cả cho đỡ mệt :)


III. Tối ưu ở chỗ nào của ứng dụng ?? và các phương thức tối ưu nói chung
A. Những chỗ nào cần tối ưu
Thông thường , chỉ có khoảng 5% số dòng code của ứng dụng sẽ quyết đinh tốc độ thực thi của toàn bộ chương trình, và 5% số dòng code này mới cần được tối ưu. ví dụ: trong các chương trình đồ họa ... thủ tục được dùng nhiều nhất là thủ tục ghi điểm ảnh, trong các trương trình quét file thì đương nhiên các vòng lặp trong thủ tục duyệt file cần đc chú ý ... chứ không lên bạ đâu cũng tối ưu.. sẽ làm tăng thời gian phát triển, dò lỗi mà hiệu quả đạt đc thì :))
B - Các phương thức tối ưu thông dụng:
1.Tối ưu thuật toán xử lý( Algorithms )
+ Bạn cần nắm rõ thuật toán mình đang áp dụng cho bài toán hiện hành
2. Tìm hiểu kỹ ngồn ngữ, công nghệ cần dùng
+ Nắm rõ các techique cần thiết để áp dụng cho bài toán nhằm đạt mục đích cao nhất về kích cỡ, thời gian phát triển, tốc độ.
3. Tìm hiểu kỹ các thông số complier của mỗi trình biên dịch
+ mỗi trình biên dịch vb6, VC, VS.NET ... đều có các thông số biên dịch cho phép tối ưu ứng dụng về kích cỡ,tốc độ.. và mặc định là không tối ưu, thậm chí còn kèm thêm các thông tin gỡ rối ( debug info),các lệnh chặn lỗi tràn số...khiến cho ứng dụng sau khi biên dịch phình to và chạy như rùa thậm chí còn để 1 đống thông tin khiến cho cracker dịch ngược mã nguồn dễ dàng lộ luôn cả tên variable.Do vậy hãy tìm hiểu kỹ về các chỉ thị biên dịch khi complie ứng dụng.

4.Đệm trước dữ liệu cần xử lý ( PRE CACHE )
+ một cách rất đơn giản để tăng tốc độ xử lý của nhiều ứng dụng bằng cách tính trước các thông tin cần xử lý rồi lưu vào bố nhớ, sau đó thay vì tính toán trong vòng lặp ta chỉ cần đọc trong bộ nhớ.. tùy trường hợp mà performance tăng lên vài lần thậm chí vài chục lần :
Ví dụ :
- Nếu bạn đã từng làm chương trình xử lý ảnh trên DOS
với MODE 320x200, có một cách rất đơn giản để tăng tốc độ tính toán trong thủ tục putpixel thay vì dùng lệnh Y* 200 + X để tính offset của X,Y trong bộ nhớ màn hình , bạn làm sẵn 1 vùng đệm 200 Word , để tính trước giá trị của 200 điểm đầu dòng do vậy để tính offset là chỉ cần dùng Mattrix[Y] + X,
- Bạn muốn tính tồn kho của 1 hay nhiều mặt hàng , đây là bài toán mất rất nhiều thời gian tính toán do phải truy xuất 1 lượng dữ liệu lớn ,với CSDL sau vài năm của 1 doanh nghiệp cỡ nhỏ thường CSDL sẽ lên tới vài trăm MB , cách đơn giản nhất là tạo chỉ mục rùi tính giá trị theo từng tháng... bạn sẽ tăng tốc độ lên vài chục lần .
5. Tăng vùng đệm cần xử lý trong cùng 1 thời điểm
+ Đa số các máy tính đều có khả năng xử lý nhiều byte dữ liệu cùng 1 lúc , do vậy hãy tìm hiểu kỹ và luôn dùng maximum khi có thể
Ví dụ :
- Thay vì đọc từng byte một khi đọc file, bạn hãy đọc 1 lúc 64KB , thậm chí 1MB 1 lúc ... tuy không tăng lên 64536 lần nhưng ít nhất nó sẽ nhanh hơn gần trăm lần /
- Lệnh cấp phát khối nhớ của VB rất chậm chạp ví dụ bạn làm chương trình scan file và ghi kết quả ra 1 bộ đệm .. thay vì sau mỗi file đc tìm thấy bạn resize bộ đệm = lượng byte tìm đc, hãy thử
resize bộ đệm 1 lần = 10.000 record , sau khi tìm xong thì resize lại, bạn sẽ thấy tốc độ tăng vài chục lần ,đồng thời tiết kiệm bộ nhớ và tránh tình trạng phân mảnh bộ nhớ
6.Chỉ tính toán khi cần dùng ( caculate on demain )
- Đây là phương pháp khi thao tác với số lượng dữ liệu cực lớn, hãy tưởng tượng bạn phải thao tác với 1 table hàng tỷ bản ghi,việc load ra toàn bộ table sẽ làm cạn kiệt bộ nhớ động thời sẽ treo ứng dụng trong 1 khoảng thời gian dài ,cách tốt nhất là chia nhỏ table làm nhiều phần gọi là page , mỗi phần 1MB và load vào grid , khi user di chuyển con trỏ đến bản ghi ở vị trí page nào thì load page đó
để xử lý, bạn sẽ để ý thấy kỹ thuật này áp dụng rất nhiều trong lĩnh vực đồ họa , CSDL.
7.... còn nhìu nữa nhưng tạm thế đã nhé ;)) xem típ kỳ 2


Phạm Hải
Quản trị dự án ,Chuyên gia đào tạo
Đại học FPT

Hình đại diện của người dùng
VBNewbie
Thành viên tích cực
Thành viên tích cực
Bài viết: 113
Ngày tham gia: T.Bảy 29/03/2008 7:13 pm
Đến từ: Computer
Been thanked: 3 time
Liên hệ:

Re: Các kỹ thuật tối ưu ứng dụng

Gửi bàigửi bởi VBNewbie » T.Bảy 03/05/2008 8:35 am

:D Pác viết pro wá, đọc hok hiểu nhưng vẫn thấy hay. :D
-------[[[[[[[ VMind - PM trắc nghiệm đa năng ]]]]]]]]------
http://vmind.co.cc/vmind
-------[[[[ Diễn đàn trí tuệ Việt Nam ! ]]]]]]]]-----
http://vmind.co.cc

Hình đại diện của người dùng
tieurongtien
Thành viên năng nổ
Thành viên năng nổ
Bài viết: 78
Ngày tham gia: T.Tư 26/03/2008 7:56 pm

Re: Các kỹ thuật tối ưu ứng dụng

Gửi bàigửi bởi tieurongtien » T.Tư 07/05/2008 7:07 pm

Dù không hiểu nhiều nhưng em biết đây là một bài hay
Đừng xấu hổ khi không biết, chỉ xấu hổ khi không học

Hình đại diện của người dùng
Kỳ Nam
Guru
Guru
Bài viết: 510
Ngày tham gia: CN 12/08/2007 8:47 pm
Đến từ: Qui Nhơn
Been thanked: 1 time
Liên hệ:

Re: Các kỹ thuật tối ưu ứng dụng

Gửi bàigửi bởi Kỳ Nam » T.Năm 08/05/2008 10:09 am

ẹ sai chính tả kìa ông :
6.Chỉ tính toán khi cần dùng ( caculate on demain )
-> calculate on demand

QuangHoa
Guru
Guru
Bài viết: 542
Ngày tham gia: T.Năm 27/03/2008 9:02 am
Đến từ: Quê hương Đại tướng Võ Nguyên Giáp
Been thanked: 5 time
Liên hệ:

Re: Các kỹ thuật tối ưu ứng dụng

Gửi bàigửi bởi QuangHoa » T.Năm 08/05/2008 10:22 am

Háo hức chờ kỳ hai đây, ủng hộ anh HaiTP.
朋友
这些年一个人风也过雨也走,有过泪有过错还记得坚持什么。
真爱过才会懂会记没会回手,终有梦中有你在心中。
朋友一生一起走那些日子不再有,一句话一辈子一生情一杯九。
朋友不曾孤单过一声朋友你会懂,还有伤还有痛还要走还有我。

Hình đại diện của người dùng
thuocthoigian
Thành viên danh dự
Thành viên danh dự
Bài viết: 167
Ngày tham gia: T.Hai 31/07/2006 2:07 pm
Đến từ: Minh Lộ - Thanh Hóa
Liên hệ:

Re: Các kỹ thuật tối ưu ứng dụng

Gửi bàigửi bởi thuocthoigian » T.Năm 08/05/2008 2:26 pm

đọc những bài HaiTP thấy rất bổ ích! tui cũng là ng` sx phần mềm nhưng đọc thấy nhìu cái chưa dc bít quá. bác đang thất nghiệp a`? vào Thanh Hóa làm với bọn này đi.
Sự tưởng tượng còn quan trọng hơn kiến thức! (A.Einstein)

Hình đại diện của người dùng
tdat00
Thành viên tích cực
Thành viên tích cực
Bài viết: 137
Ngày tham gia: T.Bảy 29/03/2008 8:18 am
Has thanked: 8 time
Been thanked: 2 time

Re: Các kỹ thuật tối ưu ứng dụng

Gửi bàigửi bởi tdat00 » T.Sáu 09/05/2008 11:39 am

HaiPT đã viết:Tên bài viết : Tối ưu ứng dụng áp dụng cho mọi ngôn ngữ
Tác giả : haipt (http://WWW.CAULACBOVB.COM)
Level : ADVANCE


Để tối ưu một ứng dụng chúng ta cần xác định :

I.Tối ưu để giải quyết yêu cầu gì :
A.Thời gian thực thi tổng thể lớn quá mức cho phép
B.Khách hàng cảm thấy chậm do ứng dụng chậm phản hồi, hay bị not responding...
C.Giảm kích cỡ ứng dụng ( :) không bàn vì không cần thiết )
II.Tối ưu bằng phương thức nào? Chi phí tối ưu so với lợi ịch đạt được
A.Cải tiến lại thuật toán,công nghệ sử dụng ( soft ware )
B.Mua phần cứng mạnh hơn( hard ware)
Chúng ta cần xem xét kỹ để quyết định, với đa số các bài toán , sự chênh lệch thực thi của 1 chương trình dùng Int và long là hoàn toàn không đáng kể ,đã qua rồi cái thời mà lập trình viên phải tiết kiệm từng byte khi lập trình ...chính các bậc tiền bối đã cho chúng ta thấy 1 bài học đắt giá qua lỗi Y2K2 để lại cho hậu thế >:) Do vậy không nên bận tâm với việc dùng hàm có $ hay không , int hay long... trừ khi bạn đang dùng máy 80286 , với 4MB RAM :))
Với đa sô bài toán, thì hình thức tối ưu đơn giản và hiệu quả nhất là nâng cấp phần cứng mới , đặc biệt là các ứng dụng đòi hỏi bộ nhớ lớn .
Với các bài toán mà hiệu quả đạt đc lại nhỏ hơn chi phí tối ưu + bảo trì sau này thì biện pháp hiệu quả nhất là không làm gì cả cho đỡ mệt :)


III. Tối ưu ở chỗ nào của ứng dụng ?? và các phương thức tối ưu nói chung
A. Những chỗ nào cần tối ưu
Thông thường , chỉ có khoảng 5% số dòng code của ứng dụng sẽ quyết đinh tốc độ thực thi của toàn bộ chương trình, và 5% số dòng code này mới cần được tối ưu. ví dụ: trong các chương trình đồ họa ... thủ tục được dùng nhiều nhất là thủ tục ghi điểm ảnh, trong các trương trình quét file thì đương nhiên các vòng lặp trong thủ tục duyệt file cần đc chú ý ... chứ không lên bạ đâu cũng tối ưu.. sẽ làm tăng thời gian phát triển, dò lỗi mà hiệu quả đạt đc thì :))
B - Các phương thức tối ưu thông dụng:
1.Tối ưu thuật toán xử lý( Algorithms )
+ Bạn cần nắm rõ thuật toán mình đang áp dụng cho bài toán hiện hành
2. Tìm hiểu kỹ ngồn ngữ, công nghệ cần dùng
+ Nắm rõ các techique cần thiết để áp dụng cho bài toán nhằm đạt mục đích cao nhất về kích cỡ, thời gian phát triển, tốc độ.
3. Tìm hiểu kỹ các thông số complier của mỗi trình biên dịch
+ mỗi trình biên dịch vb6, VC, VS.NET ... đều có các thông số biên dịch cho phép tối ưu ứng dụng về kích cỡ,tốc độ.. và mặc định là không tối ưu, thậm chí còn kèm thêm các thông tin gỡ rối ( debug info),các lệnh chặn lỗi tràn số...khiến cho ứng dụng sau khi biên dịch phình to và chạy như rùa thậm chí còn để 1 đống thông tin khiến cho cracker dịch ngược mã nguồn dễ dàng lộ luôn cả tên variable.Do vậy hãy tìm hiểu kỹ về các chỉ thị biên dịch khi complie ứng dụng.

4.Đệm trước dữ liệu cần xử lý ( PRE CACHE )
+ một cách rất đơn giản để tăng tốc độ xử lý của nhiều ứng dụng bằng cách tính trước các thông tin cần xử lý rồi lưu vào bố nhớ, sau đó thay vì tính toán trong vòng lặp ta chỉ cần đọc trong bộ nhớ.. tùy trường hợp mà performance tăng lên vài lần thậm chí vài chục lần :
Ví dụ :
- Nếu bạn đã từng làm chương trình xử lý ảnh trên DOS
với MODE 320x200, có một cách rất đơn giản để tăng tốc độ tính toán trong thủ tục putpixel thay vì dùng lệnh Y* 200 + X để tính offset của X,Y trong bộ nhớ màn hình , bạn làm sẵn 1 vùng đệm 200 Word , để tính trước giá trị của 200 điểm đầu dòng do vậy để tính offset là chỉ cần dùng Mattrix[Y] + X,
- Bạn muốn tính tồn kho của 1 hay nhiều mặt hàng , đây là bài toán mất rất nhiều thời gian tính toán do phải truy xuất 1 lượng dữ liệu lớn ,với CSDL sau vài năm của 1 doanh nghiệp cỡ nhỏ thường CSDL sẽ lên tới vài trăm MB , cách đơn giản nhất là tạo chỉ mục rùi tính giá trị theo từng tháng... bạn sẽ tăng tốc độ lên vài chục lần .
5. Tăng vùng đệm cần xử lý trong cùng 1 thời điểm
+ Đa số các máy tính đều có khả năng xử lý nhiều byte dữ liệu cùng 1 lúc , do vậy hãy tìm hiểu kỹ và luôn dùng maximum khi có thể
Ví dụ :
- Thay vì đọc từng byte một khi đọc file, bạn hãy đọc 1 lúc 64KB , thậm chí 1MB 1 lúc ... tuy không tăng lên 64536 lần nhưng ít nhất nó sẽ nhanh hơn gần trăm lần /
- Lệnh cấp phát khối nhớ của VB rất chậm chạp ví dụ bạn làm chương trình scan file và ghi kết quả ra 1 bộ đệm .. thay vì sau mỗi file đc tìm thấy bạn resize bộ đệm = lượng byte tìm đc, hãy thử
resize bộ đệm 1 lần = 10.000 record , sau khi tìm xong thì resize lại, bạn sẽ thấy tốc độ tăng vài chục lần ,đồng thời tiết kiệm bộ nhớ và tránh tình trạng phân mảnh bộ nhớ
6.Chỉ tính toán khi cần dùng ( caculate on demain )
- Đây là phương pháp khi thao tác với số lượng dữ liệu cực lớn, hãy tưởng tượng bạn phải thao tác với 1 table hàng tỷ bản ghi,việc load ra toàn bộ table sẽ làm cạn kiệt bộ nhớ động thời sẽ treo ứng dụng trong 1 khoảng thời gian dài ,cách tốt nhất là chia nhỏ table làm nhiều phần gọi là page , mỗi phần 1MB và load vào grid , khi user di chuyển con trỏ đến bản ghi ở vị trí page nào thì load page đó
để xử lý, bạn sẽ để ý thấy kỹ thuật này áp dụng rất nhiều trong lĩnh vực đồ họa , CSDL.
7.... còn nhìu nữa nhưng tạm thế đã nhé ;)) xem típ kỳ 2



Bác có biết cách nào để "Tăng vùng đệm cần xử lý trong cùng 1 thời điểm" không? Chỉ giúp em với?

Hình đại diện của người dùng
anhtuyenbk
Guru
Guru
Bài viết: 1311
Ngày tham gia: T.Năm 22/09/2005 4:12 pm
Đến từ: Một nơi chừa từng biết, chưa từng nghe, chưa từng thấy
Been thanked: 38 time

Re: Các kỹ thuật tối ưu ứng dụng

Gửi bàigửi bởi anhtuyenbk » T.Sáu 09/05/2008 11:47 am

Bạn ko nên Quote hết một bài dài như vậy? Người đọc sẽ rất mất thời gian để cuộn chuột.
Chỉ nên quote phần nào cần thiết thôi.
Kiếm cơm cho qua ngày tháng
https://www.facebook.com/pinduphongpisenchinhhang

Hình đại diện của người dùng
darkan
Thành viên chính thức
Thành viên chính thức
Bài viết: 32
Ngày tham gia: T.Hai 21/04/2008 6:46 pm

Re: Các kỹ thuật tối ưu ứng dụng

Gửi bàigửi bởi darkan » T.Sáu 09/05/2008 12:49 pm

Ví dụ có zồi đấy thây ^^!
Khai báo đoạn buffer để đọc file maximize ^^!
Còn nếu để tăng maximize buffer cho chương trình viết bằng vb thì hok có biết,chỉ biết với java thôi :">
Is the moon rising...

Hình đại diện của người dùng
playgemboy
Thành viên danh dự
Thành viên danh dự
Bài viết: 289
Ngày tham gia: CN 13/04/2008 6:10 am
Đến từ: Bình Phú, Quận 6, TP.HCM
Been thanked: 1 time
Liên hệ:

Re: Các kỹ thuật tối ưu ứng dụng

Gửi bàigửi bởi playgemboy » CN 11/05/2008 1:48 pm

Phần 2 đâu rồi, sao mà không thấy đâu hết trơn?

P/S: Hỏi từ tháng 5, tháng 7 quay lại, cũng chưa thấy đâu :-/
<I Come Back>

Hình đại diện của người dùng
FVS
Thành viên tích cực
Thành viên tích cực
Bài viết: 178
Ngày tham gia: T.Ba 13/05/2008 10:38 am

Re: Các kỹ thuật tối ưu ứng dụng

Gửi bàigửi bởi FVS » CN 02/11/2008 1:06 pm

Ngày xưa em tưởng cứ source ngắn là tốt hơn, nhanh hơn source dài nhưng giờ mới bik là sai (các bạn tự hiểu nhé) mặc dù mới nhin có vẻ vậy.
Nhật kí giải thuật - FVS:

Http://GiaiThuat.WordPress.Com

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4760
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 515 time

Re: Các kỹ thuật tối ưu ứng dụng

Gửi bàigửi bởi truongphu » T.Tư 05/11/2008 8:36 pm

Đọc bài: Các kỹ thuật tối ưu ứng dụng
Tác giả HaiPT. Người bình truongphu

I.Tối ưu để giải quyết yêu cầu gì :
A.Thời gian thực thi tổng thể lớn quá mức cho phép <-- Bàn luận: còn yếu "cơ"
Bàn luận:--> Nếu áp dụng kỹ thuật tối ưu, Thời gian thực thi tổng thể giảm đến mức MIN tốt nhất

B...
C...
II.Tối ưu bằng phương thức nào? Chi phí tối ưu so với lợi ịch đạt được
A.Cải tiến lại thuật toán,công nghệ sử dụng ( soft ware )
B.Mua phần cứng mạnh hơn( hard ware)
... 1 bài học đắt giá qua lỗi Y2K2 để lại cho hậu thế Do vậy không nên bận tâm với việc dùng hàm có $ hay không , int hay long...
Với đa sô bài toán, thì hình thức tối ưu đơn giản và hiệu quả nhất là nâng cấp phần cứng mới , đặc biệt là các ứng dụng đòi hỏi bộ nhớ lớn .
hoặc ... không làm gì cả cho đỡ mệt
Bàn luận:--> HaiPT giờ mới nghiệm tốc độ phần cứng!!
III. Tối ưu ở chỗ nào của ứng dụng ?? và các phương thức tối ưu nói chung
A. Những chỗ nào cần tối ưu
... khoảng 5% số dòng code của ứng dụng sẽ quyết đinh tốc độ thực thi ..
Bàn luận: Hơi chủ quan
--> Tối ưu ứng dụng do Tối ưu code, mà Tối ưu code là tối ưu tổng thể (thuật toán & kỹ thuật LT) và tối ưu từng câu code (kỹ thuật LT), nghĩa là tối ưu tùm lum 100%. Nói chung kỹ thuật LT là quan trọng nhất.
...

4.Đêm trước dữ liệu cần xử lý ( PRE CACHE )
Bàn luận: --> đây thuộc kỹ thuật lập trình đã nói trên, do tay nghề của lập trình viên là chính đã nói trên.
5. Tăng vùng đệm cần xử lý trong cùng 1 thời điểm
Bàn luận: --> Phần cứng quyết định, hãy tăng thông số tối đa nếu được!
6.Chỉ tính toán khi cần dùng ( caculate on demand )
Bàn luận: --> đây cũng thuộc kỹ thuật lập trình đã nói trên, đã nhắc lại ở mục 5

Tóm tắt bình luận: Cảm ơn HaiPT đã hệ thống hóa, thế thôi. còn các vấn đề thì hoặc ai cũng biết, hoặc chưa đồng ý vì tác giả nói quá mức hoặc trùng lắp

FVS đã viết:Ngày xưa em tưởng cứ source ngắn là tốt hơn, nhanh hơn source dài nhưng giờ mới bik là sai

Sao lại sai? thuật toán tốt, kỹ thuật code tốt, code ngắn là Number One!

tieurongtien đã viết:Dù không hiểu nhiều nhưng em biết đây là một bài hay

Được đấy!

VBNewbie đã viết: Pác viết pro wá, đọc hok hiểu nhưng vẫn thấy hay.

Càng xịn hơn

TB: HaiPT là người động viên và khuyến khích tôi. Bài viết trên tinh thần khách quan
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

Hình đại diện của người dùng
FVS
Thành viên tích cực
Thành viên tích cực
Bài viết: 178
Ngày tham gia: T.Ba 13/05/2008 10:38 am

Re: Các kỹ thuật tối ưu ứng dụng

Gửi bàigửi bởi FVS » T.Năm 06/11/2008 5:22 pm

truongphu đã viết:
FVS đã viết:Ngày xưa em tưởng cứ source ngắn là tốt hơn, nhanh hơn source dài nhưng giờ mới bik là sai

Sao lại sai? thuật toán tốt, kỹ thuật code tốt, code ngắn là Number One!

SAo vậy dc ạ, ví dụ xắp xếp kiểu so sánh và xắp xếp qicksort ấy ạ (còn nhìu ví dụ kỉu này lắm, hồi lớp 9 bọn cháu thường thi nhau xem chương trình ai ngắn hơn, ít dònn hơn (TP7) nên có ít kinh nghiệm) cháu nói là ngắn hơn về source chưa chắc đã tối ưu hơn thôi chứ không phải là luôn tồi hơn ạ.
Nhật kí giải thuật - FVS:

Http://GiaiThuat.WordPress.Com

Hình đại diện của người dùng
VBNewbie
Thành viên tích cực
Thành viên tích cực
Bài viết: 113
Ngày tham gia: T.Bảy 29/03/2008 7:13 pm
Đến từ: Computer
Been thanked: 3 time
Liên hệ:

Re: Các kỹ thuật tối ưu ứng dụng

Gửi bàigửi bởi VBNewbie » CN 09/11/2008 7:38 pm

Thường thi Code càng dài thì càng nhanh ! Càng ngắn gọn càng mất thời gian ! Ví dụ như Bubble Sort và Quick Sort !
Bubble Sort thì chỉ vỏn vẻn 7-8 dòng ! Chạy 1 triệu số phải mất cả tiếng
-------[[[[[[[ VMind - PM trắc nghiệm đa năng ]]]]]]]]------
http://vmind.co.cc/vmind
-------[[[[ Diễn đàn trí tuệ Việt Nam ! ]]]]]]]]-----
http://vmind.co.cc

Hình đại diện của người dùng
darkan
Thành viên chính thức
Thành viên chính thức
Bài viết: 32
Ngày tham gia: T.Hai 21/04/2008 6:46 pm

Re: Các kỹ thuật tối ưu ứng dụng

Gửi bàigửi bởi darkan » T.Năm 13/11/2008 6:44 pm

@ bác TruongPhu : Cái câu 5% code quyết định tốc độ chương trình là chuẩn đấy bác ah ^^!

Thường thì bao giờ trong 1 prj cũng có những chỗ bị nghẽn cổ chai - do xử lý dữ liệu lớn hoặc lặp nhiều lần .... Những chỗ đó thì code không đáng kể nhưng để chạy qua được đó là cả một vấn đề. Chỉ cần debug được những đoạn đó thì chương trình lại chạy ngon ngay.

Bác có đề cao kỹ thuật lập trình, vậy thì kỹ thuật lập trình là cái gì? Cái này là vấn đề cực rộng ^^! Kỹ thuật lập trình có thể là kỹ năng về thuật toán, kỹ năng trình bày code, comment, kinh nghiệm xử lý các vấn đề phức tạp ... Nên nếu xét trên khía cạnh là tối ưu hóa code em không đồng ý với bác là chỉ có dùng mỗi cái kỹ thuật lập trình là được. Trong vấn đề tối ưu thì chỉ quan trọng nhất là thuật toán và kinh nghiệm ^^!(Các kỹ năng kia cũng rất quan trọng nhưng nó không dính dáng vào phần này).

Code ngắn - tốt hơn?

Cái nữa em không đồng ý với bác là bác cho rằng code ngắn là tốt, chạy nhanh hơn ^^!
Thực ra độ dài ngắn của chương trình không ảnh hưởng tới tốc độ của chương trình(dĩ nhiên là so sánh các chương trình có chức năng tương đương chứ không ai so sánh hello world với chương trình vài trăm ngàn dòng code ^^!). Cái ảnh hưởng là do thuật toán cài đặt trong đoạn code đó. Bác cũng có thể nói chương trình ngắn hơn sẽ dễ quản lý, bảo trì hơn. Nhưng theo em, cái đó chưa chắc. Có dễ bảo trì hay không phải do bản thân đoạn code đó được trình bày tốt,comment đầy đủ chứ ngắn, dài không quan trọng lắm ^^!

Tối ưu - Thời gian thực thi ngắn nhất?

Nếu như trong điều kiện nghiên cứu thì em đồng ý với bác. Cơ mà bác ơi, dòng đời phũ phàng hơn nghiên cứu. Để đối lấy 1-2% cải tiến tốc độ lấy 1 đống code rắc rối, khó bảo trì thì bác có mún đổi không? Đấy là chưa tính thời gian đổ vào đấy ^^! Thế nên theo em không có quy chuẩn cho tối ưu. Tối ưu có nghĩa là dung hòa được 2 yếu tố tốc độ và đơn giản ở hết mức có thể.

Em chỉ có vài dòng thế thôi ^^!

Cheers!
Is the moon rising...

Hình đại diện của người dùng
FVS
Thành viên tích cực
Thành viên tích cực
Bài viết: 178
Ngày tham gia: T.Ba 13/05/2008 10:38 am

Re: Các kỹ thuật tối ưu ứng dụng

Gửi bàigửi bởi FVS » T.Tư 19/11/2008 4:55 pm

Có một điều đáng lưu ý nữa là nhìu khi ta sẽ làm việc với một khối mem mà máy tính lưu liên tiếp nhau trong ram ta nên tận dụng điều này để xử lý cùng lúc thay cho dùng for. Ví dụ:
điền đầy mảng byte bằng một giá trị
đọc một vùng trong file nhị phân
....
Nhật kí giải thuật - FVS:

Http://GiaiThuat.WordPress.Com


Quay về “Bài viết hướng dẫn”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.0 khách