Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sqlite 在ado.net中重新使用命令和连接对象是否是减少新对象创建的合法方法?_Sqlite_Ado.net_Compact Framework - Fatal编程技术网

Sqlite 在ado.net中重新使用命令和连接对象是否是减少新对象创建的合法方法?

Sqlite 在ado.net中重新使用命令和连接对象是否是减少新对象创建的合法方法?,sqlite,ado.net,compact-framework,Sqlite,Ado.net,Compact Framework,当前编写应用程序的方式包括在访问sqlite db的每个方法中创建一个新的连接和命令对象。考虑到我们需要它在WM5设备上运行,这将导致糟糕的性能 我们的计划是每个线程只使用一个连接对象,但我们也想到了每个线程使用一个全局命令对象。这样做的好处是,它减少了各地实例化对象所创建的垃圾收集器的开销 我找不到任何反对这样做的建议,但想知道是否有人能明确回答这样做是好是坏,为什么?虽然我不确定是否要减少命令对象的数量,但减少连接的数量肯定是一个好计划。它们的设计成本相对较高(嘿,它们实际上需要打开一个磁盘

当前编写应用程序的方式包括在访问sqlite db的每个方法中创建一个新的连接和命令对象。考虑到我们需要它在WM5设备上运行,这将导致糟糕的性能

我们的计划是每个线程只使用一个连接对象,但我们也想到了每个线程使用一个全局命令对象。这样做的好处是,它减少了各地实例化对象所创建的垃圾收集器的开销


我找不到任何反对这样做的建议,但想知道是否有人能明确回答这样做是好是坏,为什么?

虽然我不确定是否要减少命令对象的数量,但减少连接的数量肯定是一个好计划。它们的设计成本相对较高(嘿,它们实际上需要打开一个磁盘文件!),因此将它们保留相对较长的时间是非常明智的。所以,做你计划的第一阶段,然后休息一下,看看这是否能让事情变得足够好,或者你是否需要做更多的优化工作


请注意,每个连接生成一次命令对象也很可能是一种节省,因为这将允许对它们进行一次编译并多次重用。这并不重要,除非你首先坚持这种联系

虽然我不确定是否要减少命令对象的数量,但减少连接的数量绝对是一个好计划。它们的设计成本相对较高(嘿,它们实际上需要打开一个磁盘文件!),因此将它们保留相对较长的时间是非常明智的。所以,做你计划的第一阶段,然后休息一下,看看这是否能让事情变得足够好,或者你是否需要做更多的优化工作


请注意,每个连接生成一次命令对象也很可能是一种节省,因为这将允许对它们进行一次编译并多次重用。这并不重要,除非你首先坚持这种联系

回到这一点上,这是一个非常好的建议,这无疑让我再次确信,做这件事是值得的!更好的做法是,创建一个整数/字符串参数池,使其不断增长,并使用它来防止创建参数对象。@Neil:池连接、仔细确定对象的生存期、控制持有的锁和位置等。这些技术是应用程序如何扩展到生产部署的。(当然,在适当的时候应用了大量的硬件。:-)回到这一点上,这是一个非常好的建议,它肯定让我再次确信,做这件事是值得的!更好的做法是,创建一个整数/字符串参数池,使其不断增长,并使用它来防止创建参数对象。@Neil:池连接、仔细确定对象的生存期、控制持有的锁和位置等。这些技术是应用程序如何扩展到生产部署的。(当然,在适当的时候也要使用大量的硬件。:-)