您的位置:程序门 -> .net技术 -> c#



请问这两种写法,哪个效率比较高?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


请问这两种写法,哪个效率比较高?[已结贴,结贴人:welot]
发表于:2007-04-04 12:24:59 楼主
string   noteid   =   //....;
string   username   =   //....;

写法一:
strsql   =   "delete   from   admin ";
strsql   =   string.concat(strsql,   "   where   id   =   ",   noteid);
strsql   =   string.concat(strsql,   "   and   username   =   ' ",   username,   " ' ");

写法二:
strsql   =   "delete   from   admin   where   id   =   {$id}   and   username   =   '{$username} ' ";
this.sqlstr   =   this.sqlstr.replace( "{$id} ",   noteid);
this.sqlstr   =   this.sqlstr.replace( "{$username} ",   username);

为了公平,所以写法一二都是用了三个句子写成,请问写法一和写法二,哪个效率高点?
发表于:2007-04-04 12:27:161楼 得分:0
-_-#
发表于:2007-04-04 12:28:532楼 得分:1
^^ ¦ ¦     lz的想法真好
发表于:2007-04-04 12:29:113楼 得分:1
差不多吧。也许写法一略高一点,不过相信其差别就算是连续运行一千次也是可以忽略不计的。
发表于:2007-04-04 12:29:194楼 得分:2
个人感觉第一个效率高.replace的按顺序查找
发表于:2007-04-04 12:29:355楼 得分:2
都差不多,不过对于这种情况我一般用format来做,比如:
strsql   =   "delete   from   admin   where   id   =   {0}   and   username   =   '{1} ' ";
strsql   =   string.format(strsql,     noteid,username);
发表于:2007-04-04 12:33:176楼 得分:1
如果username里面有单撇号呢?   这么处理会不会有问题?

我都是用存储过程做的
发表于:2007-04-04 12:38:507楼 得分:1
测试:
循环9000次

1:2秒
2:6秒

菜鸟不懂

楼下的解释下
发表于:2007-04-04 12:39:118楼 得分:1
是900000次循环
发表于:2007-04-04 12:41:069楼 得分:1
我也和hbxtlhx一样,喜欢用string.format
发表于:2007-04-04 12:43:0610楼 得分:1
这种情况基本都是string.format来解决。没太考虑到底谁的效率更高。
发表于:2007-04-04 12:45:0711楼 得分:1
采用@参数方式更好点
发表于:2007-04-04 12:45:5912楼 得分:1
hbxtlhx(平民百姓)的方法,我喜欢。
发表于:2007-04-04 12:55:3713楼 得分:1
用stringbuilder再测试一下看看。
发表于:2007-04-04 13:01:1014楼 得分:1
区别不大
发表于:2007-04-04 13:07:5215楼 得分:1
就这两种,我个人倾向与第二种

实际使用中用参数和存储过程
发表于:2007-04-04 13:22:0316楼 得分:0
想当然,写法一:效率高
发表于:2007-04-04 13:31:1917楼 得分:1
hbxtlhx(平民百姓)的方法,我喜欢。
发表于:2007-04-04 13:41:2218楼 得分:1
都一样,一个sql还用效率高不高,2个字符串相加效率高
发表于:2007-04-04 13:43:4119楼 得分:2
第二个当然慢   因为replace要有一个查找匹配的过程
string.format   也应该不会快于第一个,内存分配次数也> =2
平民大哥   string.format   的原理是什么?能给说说吗?(很感兴趣)
发表于:2007-04-04 14:45:4720楼 得分:0
哇。。。吃个饭回来,就这么多人捧场了,

多谢各位~~~~
发表于:2007-04-04 16:13:0021楼 得分:0
没意思。。。。。
发表于:2007-04-04 18:00:3722楼 得分:0
string   noteid   =   "1 ";
string   username   =   "ddddd ";

strsql   =   "delete   from   admin ";

strsql   =   string.concat(strsql,   "   where   id   =   ",   noteid);
strsql   =   string.concat(strsql,   "   and   username   =   ' ",   username,   " ' ");

string   sqlstr   =   string.empty;

sqlstr   =   "delete   from   admin   where   id   =   {$id}   and   username   =   '{$username} ' ";

sqlstr   =   sqlstr.replace( "{$id} ",   noteid);

sqlstr   =   sqlstr.replace( "{$username} ",   username);

string   strsql1   =string.empty;
strsql1   =   "delete   from   admin   where   id   =   {0}   and   username   =   '{1} ' ";
strsql1   =   string.format(strsql,     noteid,username);


快速检索

最新资讯
热门点击