C#(System.Data.SQLite) vs CSharpSqlite

SQLite에서 정식으로 배포되는 System.Data.SQLite 버전의 C# SQLite DLL이 있고,

다른 곳에서 독자적으로 개발하는 CsharpSqlite DLL이 있는데, 코드 수준에서 호환되지는 않는다.(하지만 마이그레이션 한다고 하면 크게 고칠곳은 없다)

http://code.google.com/p/csharp-sqlite/wiki/Benchmarks

위 싸이트 벤치마킹에 따르면 정식 DLL보다 iterating에서 CshartSqlite DLL이 20~40%정도 빠르다! 라고 자랑하고 있는데..

나는 Insert,Update는 느려도 되니까 이걸로 써야겠다! 라고 생각하고 도입했는데 결과는 더 느리다 ㅠ_ㅠ

원인은, 벤치마킹에 사용한 SQLite 정식 DLL의 Method가 GetValues라는 함수 인데, 이 함수 자체가 느리다.

정식 DLL에서 GetValues함수를 쓰지 않고, GetInt32() 나 GetDouble()로 일일이 지정해 줘서 쓰게 되면

CsharpSqlite 보다도 iteration 속도가 빠르게 나오는 것을 확인했다.

결과적으로 헛짓했지만, 아쉬운건 지금 100만건 iteration하는데 (Row당 Column개수가 8개임을 고려), 무려 4.8초나 걸린다 ㅠ_ㅠ

이거보다 좀 더 빠르게 하는 방법이 없을까나..

Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

w

%s에 연결하는 중