我有一些代码可以从.NET Core 2.0中的本地SQLite数据库文件中提取HTML页面。
在调试模式下运行时,此代码可以正常工作,但是在发布应用程序后,该代码在生产中的运行速度非常慢。
我使用秒表来诊断是哪段代码导致了该问题,connection.QueryFirstOrDefault并发现在调试模式下需要2毫秒才能找到单行,但是同一任务在发布该应用程序后需要1.4秒。大约慢了700倍。
//initialize connection
var connection = new SqliteConnection("Data Source=" + dbName);
// Build SQL String
string query = @"SELECT *
FROM HtmlItems
WHERE PostID = 1;
// Start Timer
var watch = System.Diagnostics.Stopwatch.StartNew();
Submit query
HtmlItem = connection.QueryFirstOrDefault<HtmlItem>(query);
// End Timer
watch.Stop();
var result = watch.ElapsedMilliseconds();
查询映射到一个看起来像这样的对象
public class HtmlItem
{
public int PostID { get; set; }
public string PostTitle { get; set; }
public string PostDescription { get; set; }
public int PostDate { get; set; } // Unix Timestamp
public int Hidden { get; set; }
public string Url { get; set; }
public string PostHTML { get; set; }
}
在调试和生产中使用相同的数据库文件,该数据库文件只有三行。我的应用程序应该是尝试访问该文件的唯一方法。
索引SQLite数据库文件似乎并没有提高任何速度。
我想知道如何确定导致数据库连接的生产速度降低700倍的原因。
HUX布斯
相关分类