CSharp-SQLite
2012年11月5日 (月) 09:52時点におけるimported>GamerBookによる版 (→概要)
C#-SQLiteとは、C言語で書かれたSQLiteを、P/Invokeやアンセーフコードを一切使用せずにC#で書き直したものである。
概要
C#-SQLiteは、プラットフォーム呼び出しやアンセーフコードを一切使用していない。これによりMono派生プロジェクトやSilverlightなどのマネージドコードしか許されない環境においてもSQLiteを使うことができる。またC言語で書かれたSQLiteのライブラリを同梱しP/Invokeで呼び出す方式ではひとつのビルドでマルチプラットフォーム対応することも非常に難しいものになる。
その一方で動作速度はマネージドコードであるためネイティブコードに大幅に劣ると考えられていた。実際に最初期のC#-SQLiteはオリジナルバージョンのSQLite(System.Data.SQLite)に比べ、約5倍も遅かった。
だが、ソースコードの最適化が進み、さらに.NET FrameworkのJITコンパイラーも着実に進化したこともあり、2011年9月1日に実施されたベンチマークでは一部項目でC#-SQLiteがSQLiteの2倍程度の速度で動作するという逆転現象が発生するに至っている。[1]
注意
C#-SQLiteはSQLiteの公認版ではなく、SQLiteとは一切提携などはしていない。
また、SQLite由来のバグについてはC#-SQLiteプロジェクトではなく本家SQLiteプロジェクトに報告してほしいとしている。
当初SQLiteプロジェクトでは、名称に「SQLite」と含めることも認めていなかったが、後にその点だけは認めC#-SQLiteという名称に落ち着いている。