循环合并一个变量,速度慢

cfjun 2009-08-28 08:42:30
循环1000次或更多次对FileContent赋值合并,速度越来越慢,AAAAAAAAAAAAAAAAAAAA是不规则的,可能有更多个字符?
请高手帮忙解决?
<%for i=0 to 1000
response.write i&"-"
response.Flush
FileContent = FileContent & "AAAAAAAAAAAAAAAAAAAA" & vbCrLf
FileContent = FileContent & "AAAAAAAAAAAAAAAAAAAA" & vbCrLf
FileContent = FileContent & "AAAAAAAAAAAAAAAAAAAA" & vbCrLf
FileContent = FileContent & "AAAAAAAAAAAAAAAAAAAA" & vbCrLf
FileContent = FileContent & "AAAAAAAAAAAAAAAAAAAA" & vbCrLf
FileContent = FileContent & "AAAAAAAAAAAAAAAAAAAA" & vbCrLf
FileContent = FileContent & "AAAAAAAAAAAAAAAAAAAA" & vbCrLf
FileContent = FileContent & "AAAAAAAAAAAAAAAAAAAA" & vbCrLf
FileContent = FileContent & "AAAAAAAAAAAAAAAAAAAA" & vbCrLf
FileContent = FileContent & "AAAAAAAAAAAAAAAAAAAA" & vbCrLf
FileContent = FileContent & "AAAAAAAAAAAAAAAAAAAA" & vbCrLf
FileContent = FileContent & "AAAAAAAAAAAAAAAAAAAA" & vbCrLf
FileContent = FileContent & "AAAAAAAAAAAAAAAAAAAA" & vbCrLf
FileContent = FileContent & "AAAAAAAAAAAAAAAAAAAA" & vbCrLf
next%>
...全文
128 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
凡夫与俗子 2009-08-28
  • 打赏
  • 举报
回复
好多高人啊
cfjun 2009-08-28
  • 打赏
  • 举报
回复
测试过jnkc的速度是快了一点,不过还是用数组快
1000条数据需要大概2秒
用数组1万条数据1秒钟就循环完毕
toury 2009-08-28
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 cfjun 的回复:]
array  =  new  Array();
有没有类似JS里的初始化方式?

dim a()
redim a(n)
这两个是同时用吗?感觉不好用如果数据超过N条就超界了
[/Quote]
这个n不是自己乱写的,是根据前面某个计算值而定的
江南昆虫 2009-08-28
  • 打赏
  • 举报
回复
这样可以快很多:
FileAll = ""
for i=0 to 1000
response.write i&"-"
response.Flush
FileContent = ""
FileContent = FileContent & "AAAAAAAAAAAAAAAAAAAA" & vbCrLf
FileContent = FileContent & "AAAAAAAAAAAAAAAAAAAA" & vbCrLf
FileContent = FileContent & "AAAAAAAAAAAAAAAAAAAA" & vbCrLf
FileContent = FileContent & "AAAAAAAAAAAAAAAAAAAA" & vbCrLf
FileContent = FileContent & "AAAAAAAAAAAAAAAAAAAA" & vbCrLf
FileContent = FileContent & "AAAAAAAAAAAAAAAAAAAA" & vbCrLf
FileContent = FileContent & "AAAAAAAAAAAAAAAAAAAA" & vbCrLf
FileContent = FileContent & "AAAAAAAAAAAAAAAAAAAA" & vbCrLf
FileContent = FileContent & "AAAAAAAAAAAAAAAAAAAA" & vbCrLf
FileContent = FileContent & "AAAAAAAAAAAAAAAAAAAA" & vbCrLf
FileContent = FileContent & "AAAAAAAAAAAAAAAAAAAA" & vbCrLf
FileContent = FileContent & "AAAAAAAAAAAAAAAAAAAA" & vbCrLf
FileContent = FileContent & "AAAAAAAAAAAAAAAAAAAA" & vbCrLf
FileContent = FileContent & "AAAAAAAAAAAAAAAAAAAA" & vbCrLf
FileAll = FileAll & FileContent
next
cfjun 2009-08-28
  • 打赏
  • 举报
回复
array = new Array();
有没有类似JS里的初始化方式?

dim a()
redim a(n)
这两个是同时用吗?感觉不好用如果数据超过N条就超界了
hookee 2009-08-28
  • 打赏
  • 举报
回复
dim a()
redim a(n)
toury 2009-08-28
  • 打赏
  • 举报
回复
dim a
redim a(1000)
cfjun 2009-08-28
  • 打赏
  • 举报
回复
谢谢你们啊,问题基本解决了
最后一个问题就是如何初始化动态数组
是VB的定义
直接定义dim a(1000)的话感觉不灵活
toury 2009-08-28
  • 打赏
  • 举报
回复
AAAAAAAAAAAAAAAAAAAA放入数组arr,然后response.write join(arr,"<br>")
如果是数据库读出的,直接用getrows()得到数组
cfjun 2009-08-28
  • 打赏
  • 举报
回复
用response.write的话要如何生成静态呢?
睿睿爸爸 2009-08-28
  • 打赏
  • 举报
回复
每个都有回车,你就response.write就得了
速度慢恐怕是因为字符串拼接占用了大量缓存导致的,
如果你用java或.net,还可以用stringbuilder类,这个就算了,一行一行写吧
cfjun 2009-08-28
  • 打赏
  • 举报
回复
直接response.write的话很快,1秒钟都不到,请问该我该怎么操作?
hookee 2009-08-28
  • 打赏
  • 举报
回复
试试看不要字符串&合并,直接response.write输出字符
cfjun 2009-08-28
  • 打赏
  • 举报
回复
我查了很多次,从数据库读出数据基本不影响速度,就是循环那么多次合并很慢,上面这段代码执行结束差不多要用10几秒时间
hookee 2009-08-28
  • 打赏
  • 举报
回复
对于600K的数据量,如果只是一次执行,循环对于CPU的负载应该不会太大,网络条件好的话,传输的时间也不会太多,但用浏览器渲染这么多数据的话,可能会慢点。要查一下慢在哪个环节.
cfjun 2009-08-28
  • 打赏
  • 举报
回复
就是为了生成一个静态,FileContent 可能会达到600K
number123456 2009-08-28
  • 打赏
  • 举报
回复
你为什么要这一次性操作这么大的数据量?这样当然是越多IIS承受负担就越大,你应该考虑一下分批操作

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧