SỐ 129
HỒ LÔ BIẾN

Ai VB.NET hông?
Các thao tác tính thời gian
CHƯƠNG CAN CHÍP

Lâu lâu, hoặc ít nhất một lần trong đời, thế nào bà con cũng động đến việc tính thời gian tiêu tốn cho một công việc nào đấy. Cách đơn giản nhất là sử dụng đồng hồ bấm giây y chang như trong thể thao.

Trong VB.NET, việc này được thực hiện thật dễ dàng bằng cách dùng kết hợp hai hành vi Now Ticks của lớp DateTime. Hành vi Now báo cho bà con biết “bây giờ là mấy giờ” trên máy tính. Hành vi Ticks trả về một trị Long bằng với số khoảng 100 nanosecond (1 nanosecond = 1 phần tỷ giây) đã trôi qua tính từ 12 giờ trưa ngày 1/1/0001 (năm thứ 1). Để minh họa cách dùng các hành vi này, chúng ta thử mần ví dụ so sánh việc thêm chuỗi vào một biến thuộc kiểu StringBuilder với việc thêm chuỗi vào một biến thuộc kiểu String, xem cách nào nhanh hơn.

Bà con vui lòng mở VB.NET để mần ứng dụng thuộc kiểu Windows Application. Ta sẽ không xài Form1, mà chỉ cần một đơn thể mã lệnh (code module). Cho nên, sau khi VB.NET đã dọn sẵn Form1, bà con “bộp” vào mục Add New Item… trên trình đơn Project. Sau đó, trên hộp thoại Add New Item, “bộp” vào biểu tượng Module bên ô Templates, cuối cùng “bộp” vào nút Open. Ngay bên dưới dòng Module Module1, bà con gõ đoạn mã 1 vào đó.

Đoạn mã 1
Sub Main()
Dim I As Integer
Dim BatDauLuc As New DateTime()
Dim KetThucLuc As New DateTime()
Dim lngThoiGianTaoString, lngThoiGianTaoStringBuilder As Long
‘ Tính thời gian tạo chuỗi bằng StringBuilder
BatDauLuc = DateTime.Now
Dim txtVanBan As New System.Text.StringBuilder()
For I = 1 To 50000
‘ Thêm chuỗi vào StringBuilder
txtVanBan = txtVanBan.Append("A")
Next
KetThucLuc = DateTime.Now
' Số xung nhịp 100-nanosecond để tạo chuỗi bằng StringBuilder
lngThoiGianTaoStringBuilder = KetThucLuc.Ticks - BatDauLuc.Ticks
‘ Tính thời gian tạo chuỗi bằng String
BatDauLuc = DateTime.Now
Dim sChuoi As String
For I = 1 To 50000
‘ Thêm chuỗi vào String
sChuoi = sChuoi & "A"
Next
KetThucLuc = DateTime.Now

' Số xung nhịp 100 nanosecond để tạo chuỗi bằng String
lngThoiGianTaoString = KetThucLuc.Ticks - BatDauLuc.Ticks
‘ Hiển thị kết quả so sánh ra cửa sổ Output
Console.WriteLine("Tạo chuỗi bằng StringBuilder nhanh hơn " & _
lngThoiGianTaoString / lngThoiGianTaoStringBuilder & " lần.")
Console.ReadLine()
End Sub

Trong cửa sổ Solution Explorer, “bộp” chuột phải vào tên của mục (là tên dự án hiện hành) ngay bên dưới mục Solution, rồi “bộp” tiếp vào mục Properties. Trên hộp thoại Property Pages, “bộp” vào mục Sub Main trong danh sách Startup object. Xong xuôi, lại “bộp” vào nút [OK]. Chuỗi những cái “bộp” vừa rồi là để báo cho VB.NET biết cần khởi động dự án này bằng thủ tục Sub Main.

Ví dụ này sử dụng cửa sổ Output để xem kết quả so sánh. Nhìn vào cửa sổ này, bà con thấy ngay dòng chữ “Tạo chuỗi bằng StringBuilder nhanh hơn N lần”. Nếu thử nhiều lần, bà con thấy trị của N thay đổi (tui thử 3 lần, thấy kết quả là: 1259, 1233.33333 và 1355). Mọi tính toán chỉ mang tính tương đối vì trong lúc ví dụ này đang chạy còn có thể có những tiến trình khác xen kẽ, khiến cho tính liên tục của các lệnh bị ảnh hưởng chút xíu xìu xiu!

[Đầu trang]
Trang chủ
Nội lực "Peter Pan"
Cầu nối Intel Việt Nam
Chuyện trong tuần
Cõi người ta
Bình luận thị trường
Cõi Mô-bai
Chuyên đề
Bổ ngửa
Túi càn khôn IT
Hồ lô biến
Cảm về Game
Nhật ký e-CHÍP
Bản quyền Công ty Phần mềm & Truyền thông VASC
 99 Triệu Việt Vương HN; Tel: (04) 9782235 • email: echip@vasc.com.vn
Mọi chi tiết về kinh doanh và quảng cáo xin liên hệ Phòng Quảng cáo. Tel: (04) 9782077 kd@vasc.com.vn