网站导航: 首页 >> 网络学堂 > 网络编程 > 正文

ASP.NET、PHP、JSP的简单比较

2005-9-30 20:45:58   点击:   作者:未知
推荐给好友】 【字体: 】 【打印】 【关闭

四、编写测试代码

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]  下一页


来源:未知



 相关内容