四、编写测试代码
1.ASP.NET测试代码
首先使用的是ASP.NET环境,VS.NET 2003作为开发工具已经安装在我的笔记本电脑上,在制作测试项目时,选用了C#作为开发语言,使用ADO.NET进行数据库操作。VS2003环境非常好用,可惜调试出了问题,系统总报错“无法开始调试,Microsoft Ineternet Explorer无法找到”,幸好程序简单不调试也可以。接着是一些讨厌的权限问题又影响了工作进度,在正确的目录设置了权限后,程序终于可以运行了。
下面为整数测试的部分代码:
DateTime startTime = DateTime.Now;
int addCount = int.Parse( Request.Form[ "loopCount" ] );
int result = 0;
for( int i = 0; i < addCount; i ++ )
{
result = 0;
for( int j = 0; j < addCount; j ++ )
result += j;
}
TimeSpan timeSpent = DateTime.Now - startTime;
以上代码用一个两重循环来计算整数加法,浮点数的加法测试程序与此类似。C#语言直观清晰,微软的.NET环境功能很强,很多东西可直接调用,比如计算时间差就非常简单,然后测试数据库性能,由于微软.NET中不包含对MySQL的直接支持,从www.mysql.com下载了最新的ADO.Net Driver for MySQL,测试MySQL性能的代码如下:
DateTime startTime = DateTime.Now;
int insertCount = int.Parse( Request.Form[ "sqlNumber" ] );
Random ownerGen = new Random( (int)DateTime.Now.Ticks );
int ownerid = ownerGen.Next( int.MaxValue );
MySqlConnection conn =
new MySqlConnection
(
"database=test;server=10.1.1.9;ct Timeout=30;user id=test; pwd=test"
);
conn.Open();
MySqlTransaction testTrans;
testTrans = conn.BeginTransaction( IsolationLevel.ReadCommitted );
MySqlCommand cmd = conn.CreateCommand();
for( int i = 0; i < insertCount; i ++ )
{
cmd.CommandText =
"insert into fortest values ( " + ownerid.ToString() +", " + i.ToString() +
", 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' )";
cmd.ExecuteNonQuery();
}
testTrans.Commit();
cmd.CommandText = "delete from fortest where ownerid = " + owenerid.ToString();
cmd.ExecuteNonQuery();
cmd.Dispose();
conn.Close();
为了测试事务处理并加快插入速度,以上代码程序将2000个插入操作放在了一个事务中,测试表用如下SQL创建:
create table FORTEST
(
OWNERID INTEGER not null,
SERIALNUMBER INTEGER not null,
DATA VARCHAR(200)
)
alter table FORTEST
add primary key (OWNERID, SERIALNUMBER)
插入时ownerid随机产生,以便测试并发性能。由于MySQL可以支持多种数据引擎,所以对两种比较常用的引擎MyISAM和InnoDB都作了测试。
微软.NET包含了SQL Server 2000的ADO.NET驱动和Oracle驱动,但测试Oracle时没有使用微软驱动而使用了Oracle自己的版本为9.2.0.4的ADO.NET驱动,因为微软的驱动略显陈旧。SQL Server和Oracle 测试代码除了conn与cmd两个变量使用的数据类型不同外,其他代码与此完全相同,ADO.NET代码在不同数据库间有很好的可移植性。由于数据类型差异,Oracle、SQL Server 2000与MySQL的建表SQL略有不同。
上一页 [1] [2] [3] [4] [5] 下一页