【发布时间】:2015-12-07 12:34:07
【问题描述】:
这是密码
using System;
using Oracle.DataAccess.Client;
using System.Text;
namespace Insert
{
class Program
{
static void Main(String[] args)
{
String param = "1";
if (args.Length > 0)
{
param = args[0];
}
String connString = "User Id=****;Password=*******;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=*********)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl))); Connection Timeout=5";
using (OracleConnection connection = new OracleConnection(connString))
{
connection.Open();
OracleCommand cmd = connection.CreateCommand();
cmd.CommandText = String.Format("INSERT INTO PROCESS_TEST ( SEQ, TEST ) VALUES ( TEST_SEQ.nextval, '{0}' )", param);
cmd.ExecuteNonQuery();
connection.Close();
}
}
}
}
如您所见,这是非常简单的 C# 代码。
它所要做的就是连接到数据库并插入一个字符串数据(默认为“1”)............好吧,我知道在连接工作下它可能会很乱Oracle.DataAccess.Client 但我不认为它是一个如此沉重的库,它会对应用程序性能产生如此大的影响。
在 IDE 上运行(我的情况是 Visual Studio 2013)
- 眨眼间的速度很快,不到一秒。
由 .exe 运行
- 太慢了称它为简单的应用程序。大约需要 3 到 5 分钟。
- 此过程在 3-5 分钟后完成。我在代码的每一步都记录了日志,我注意到
using (OracleConnection connection = new OracleConnection(connString))是主要原因。
内存
而且我不明白为什么执行该进程会占用超过 40MB 的内存。其他任何数据访问库是否会占用类似的内存量?
问题
- 在 IDE 上运行应用程序和通过
.exe?运行应用程序有什么区别? - 为什么我的应用程序在由
.exe运行时需要这么长时间才能完成其工作? - 为什么会有如此巨大的性能差异?
- 这是一个已知的
Oracle.DataAccess库问题吗?
环境信息
- Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64 位生产
- Intel(R) Core(TM) i7-3930K CPU @ 3.20GHz
- 8.00GB 内存
- Windows 7 家庭高级版 64 位
【问题讨论】: