「CSharp-SQLite」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
(ページの作成:「'''C#-SQLite'''とは、C言語で書かれたSQLiteを、P/Invokeアンセーフコードを一切使用せずにC#で書き直したも...」)
 
imported>GamerBook
2行目: 2行目:
  
 
== 概要 ==
 
== 概要 ==
C#-SQLiteは、[[プラットフォーム呼び出し]]や[[アンセーフコード]]を一切使用していない。これにより[[Mono]]派生プロジェクトや[[Silverlight]]などの[[マネージドコード]]しか許されない環境においても[[SQLite]]を使うことができる。
+
C#-SQLiteは、[[プラットフォーム呼び出し]]や[[アンセーフコード]]を一切使用していない。これにより[[Mono]]派生プロジェクトや[[Silverlight]]などの[[マネージドコード]]しか許されない環境においても[[SQLite]]を使うことができる。また[[C言語]]で書かれた[[SQLite]]の[[ライブラリ]]を同梱し[[P/Invoke]]で呼び出す方式ではひとつのビルドでマルチプラットフォーム対応することも非常に難しいものになる。
  
 
その一方で動作速度は[[マネージドコード]]であるため[[ネイティブコード]]に大幅に劣ると考えられていた。実際に最初期のC#-SQLiteはオリジナルバージョンの[[SQLite]]([[System.Data.SQLite]])に比べ、約5倍も遅かった。
 
その一方で動作速度は[[マネージドコード]]であるため[[ネイティブコード]]に大幅に劣ると考えられていた。実際に最初期のC#-SQLiteはオリジナルバージョンの[[SQLite]]([[System.Data.SQLite]])に比べ、約5倍も遅かった。

2012年11月5日 (月) 09:52時点における版

C#-SQLiteとは、C言語で書かれたSQLiteを、P/Invokeアンセーフコードを一切使用せずにC#で書き直したものである。

概要

C#-SQLiteは、プラットフォーム呼び出しアンセーフコードを一切使用していない。これによりMono派生プロジェクトやSilverlightなどのマネージドコードしか許されない環境においてもSQLiteを使うことができる。またC言語で書かれたSQLiteライブラリを同梱しP/Invokeで呼び出す方式ではひとつのビルドでマルチプラットフォーム対応することも非常に難しいものになる。

その一方で動作速度はマネージドコードであるためネイティブコードに大幅に劣ると考えられていた。実際に最初期のC#-SQLiteはオリジナルバージョンのSQLiteSystem.Data.SQLite)に比べ、約5倍も遅かった。

だが、ソースコードの最適化が進み、さらに.NET FrameworkJITコンパイラーも着実に進化したこともあり、2011年9月1日に実施されたベンチマークでは一部項目でC#-SQLiteがSQLiteの2倍程度の速度で動作するという逆転現象が発生するに至っている。[1]

注意

C#-SQLiteはSQLiteの公認版ではなく、SQLiteとは一切提携などはしていない。

また、SQLite由来のバグについてはC#-SQLiteプロジェクトではなく本家SQLiteプロジェクトに報告してほしいとしている。

当初SQLiteプロジェクトでは、名称に「SQLite」と含めることも認めていなかったが、後にその点だけは認めC#-SQLiteという名称に落ち着いている。


関連項目

参考文献

外部リンク