Saturday, August 8, 2009

SQLite3 đã được viết bằng .NET

Noah Hart đã viết lại SQLite3 bằng C#. Mặc dù bản đầu tiên này vẫn chậm hơn so với bản gốc, tuy nhiên dự án này đã mở ra cách mới cho việc sử dụng SQLite trong C# mà không phải sử dụng P/Invoke hoặc mã lệnh không-an-toàn (unsafe code).

Dự án C#-SQLite được đưa trên trang Google Code với phiên bản của SQLite 3.6.16, mã nguồn này tuân thủ theo giấy phép (license) Create Common 3.0. C#-SQLite đã được kiểm thử với hơn 30,000 trường hợp test với chỉ có 9 trường hợp test vẫn chưa thực hiện được. Mã nhị phân hoàn chỉnh của nó là 528KB trong khi bản gốc là 506KB. Hiệu năng của nó là vẫn chậm hơn từ 3-5 lần so với bản gốc được cài đặt bằng C, nhưng mã nguồn C# hiện tại vẫn chưa được tối ưu hóa, và hiệu năng hiện tại vẫn ở mức chấp nhận được. Hiện tại, thì số dòng trên một giây được thể hiện ở bảng sau:

Test

C#-SQLite

SQLite 3

Insert

300K

1300K

Select

1500K

8450K

Update

60K

300K

Delete

250K

700K

C#-SQLite tuy có hiệu năng chậm hơn so với SQLite được cài đặt trên C, tuy nhiên nó thật sự là sự lựa chọn tốt cho các lập trình viên C#, bởi vì tránh phải sử dụng P/Invoke bởi vì nó khá chậm và không linh hoạt. Một lý do khác nữa là mã nguồn C sử dụng lệnh goto trong hầu hết mọi nơi, có thể cản trở việc ngăn chặn các ngoại lệ.

No comments:

Post a Comment