 |
|
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 và
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! |
|
|
|
 |
|
 |