首页 > 数据库 >dotnet 禁用 SQLite 的 SQLiteFunction 扫描程序集提升启动性能

dotnet 禁用 SQLite 的 SQLiteFunction 扫描程序集提升启动性能

时间:2024-09-12 08:55:41浏览次数:10  
标签:扫描 SQLite 启动 禁用 程序 SQLiteFunction dotnet

在我所在的团队开发的一个 WPF 应用程序里面,使用到了 SQLite 作为本地数据库。在优化启动性能过程中,发现了在启动过程一旦访问 SQLite 将会因为 SQLiteFunction 扫描程序集导致 CPU 损耗,从而影响启动性能。本文将告诉大家如何禁用 SQLite 的 SQLiteFunction 扫描程序集

在 SQLiteFunction 模块里面,将会扫描全部程序集,用来找到 SQLiteFunctionAttribute 实现类型收集。刚好我的应用不需要这样的功能,这就意味着在 SQLiteFunction 模块里面扫描全部程序集的逻辑是白跑的,禁用此逻辑可提升启动性能

禁用方法可以是在 Main 方法里面设置环境变量的方式实现禁用 SQLiteFunction 模块扫描全部程序集。以下代码需要放在应用程序运行足够早的时间,至少需要比首个 SQLite 相关模块早,由于以下代码仅仅只是设置环境变量,性能损耗上很小,可以比较放心的在 Main 方法里面设置

       // 在 SQLite 的 SQLiteFunction 类的静态构造函数会反射扫一遍所有程序集,找 SQLiteFunctionAttribute 特性
       // 我们不需要这个功能,通过配置这个环境变量,避免扫描,优化启动时 CPU 占用
       Environment.SetEnvironmentVariable("No_SQLiteFunctions", "1");

特别感谢 lsj 提供的方法,我只是代为记录

以上环境变量请参阅 SQLite Environment Variables 官方文档

标签:扫描,SQLite,启动,禁用,程序,SQLiteFunction,dotnet
From: https://www.cnblogs.com/lindexi/p/18024397

相关文章

  • dotnet 测试 SemaphoreSlim 的 Wait 是否保持进入等待的顺序先进先出
    本文记录我测试dotnet里面的SemaphoreSlim锁,在多线程进入Wait等待时,进行释放锁时,获取锁执行权限的顺序是否与进入Wait等待的顺序相同。测试的结果是SemaphoreSlim的Wait大部分情况是先进先出,按照Wait的顺序出来的,但是压力测试下也存在乱序,根据官方文档说明不应该依......
  • dotnet 测试 Mutex 的 WaitOne 是否保持进入等待的顺序先进先出
    本文记录我测试dotnet里面的Mutex锁,在多线程进入WaitOne等待时,进行释放锁时,获取锁执行权限的顺序是否与进入WaitOne等待的顺序相同。测试的结果是Mutex的WaitOne是乱序的,不应该依赖Mutex的WaitOne做排队顺序以下是测试程序代码vartaskList=newList<Task>();......
  • Packaging.DebUOS 专门为 dotnet 应用制作 UOS 安装包
    Packaging.DebUOS是我所在的团队开发开源的一款专门用在为dotnet的应用制作成为符合要求的UOS统信系统软件安装包的工具,此工具可以辅助开发者使用现有的工具链经过简单的配置即可完成安装包的制作设计思想Packaging.DebUOS旨在通过使用csproj项目文件等方式进行配置,避免......
  • Dotnetty学习笔记——自定义初始化处理器
    常常我们需要开一个服务单,对接不同的客户端,编码器、解码器等都不同,需要针对不同IP添加不同的处理器。publicclassCustomInitializer:Channellnitializer<lSocketChannel>{Action<string,string>_dealMsgAction;lServer_server;publicCustomInitializer(Action<st......
  • pbootcms提示:“未检测到您服务器环境的sqlite3数据库扩展...”
    解决方法主要有两种,需根据具体情况进行选择。 第一种方法是将数据库配置连接驱动改为pdo_sqlite。首先,按照相关提示,把数据库配置连接驱动修改为pdo_sqlite。随后,可依照图文进行操作。具体而言,打开数据库配置文件,即位于/config/database.php的文件。在该文件中,找到'type'这......
  • Python使用sqlite数据库快速创建库和表
    一、安装SQLite1、下载sqliteSQLiteDownloadPage2、解压安装包3、设置环境变量二、快速创建库和表的代码importsqlite3importos#数据库文件名db_name='StarVerification.db'new_db_name_base='StarVerification_old.db'new_db_name=new_db_name_b......
  • 网站打开提示:”未检测到您服务器环境的sqlite3数据库扩展...“
    当网站打开时提示“未检测到您服务器环境的sqlite3数据库扩展”,这表明您的服务器上缺少SQLite3扩展,或者虽然安装了SQLite3扩展,但是PHP并未正确配置来使用它。以下是一些排查和解决这个问题的方法:1.检查SQLite3扩展是否安装首先,您需要确认SQLite3扩展是否已经安装在您......
  • (3-5)绘制散点图和折线图:Flask+pygal+SQLite实现数据分析
    3.5 Flask+pygal+SQLite实现数据分析在本节的内容中,将使用Flask+pygal+SQLite3实现数据分析功能。将需要分析的数据保存在SQLite3数据库中,然后在FlaskWeb网页中使用库pygal绘制出对应的统计图。3.5.1 创建数据库首先使用PyCharm创建一个FlaskWeb项目,然后通过文件model......
  • # dotnet如何设置restore package path,依赖和项目放在一起
    dotnet如何设置restorepackagepath,依赖和项目放在一起配置说明再.csproj中添加如下配置,然后dotnetrestore,可以依赖包放到和项目一起,从而方便移动到没有网络的电脑上执行<RestorePackagesPath>../packages</RestorePackagesPath>所需的依赖包就会复制一份到本地,如下......
  • sqlite3数据库
    sqlits3数据库名,创建一个数据库,并打开,有点像vim.headerson  .modecolumn可以让输出的更美观一点  //打开一个数据库文件  ret=sqlite3_open("student.db",&pDb);  if(ret!=SQLITE_OK){    fprintf(stderr,"sqlite3_openfailed!:%s\n",......