python运行速度快吗,python程序的运行速度在所有计算机语言中最快

  python运行速度快吗,python程序的运行速度在所有计算机语言中最快

  关于VBA数组DIM,Redim Preserve的运行速度比较,思考如何插入漂亮的代码片。

  以前看教程的时候经常有人说ReDim Preserve的动态定义数组运行很慢,所以我专门做了一个测试,来分析我是否真的像网友说的那样认为ReDim Preserve不能重用。

  经过测试,得出以下结论:

  1.redim保存的速度对ReDim的次数很敏感。

  循环100万次,100000次,10000次,给单元格赋值,dim数组,用字典的计数次数定义数组维数,ReDim Preserve动态定义数组。运行时间如下:

  你会发现动态数组运行的次数每增加10倍,时间就增加100倍。

  但是如果是对于I=1,000,000到1步-1,100W次只需要2秒左右,

  综上所述,直接定义一个维度很大的数组来写代码是简单可以接受的,但是直接ReDim Preserve在一个10W的周期内也是可以接受的。

  首先给字典赋值,然后用字典的计数定义字典。写起来有点麻烦,但是很快。

  测试代码如下:

  如何在博客设置页面插入漂亮的代码片段,选择自己喜欢的代码片段的高亮样式,下面显示同样高亮的代码片段。

  //突出显示的blockSub测试用时()维度n,I,sr$,A$,B$,C$,Mypath$,brr()应用程序屏幕更新=FalseRem单元格操作用时iRow=10000Range(A1:D iRow).清除contentst=timer my path= C:\ Users \ DDN \ Desktop \ test \ * .*For i=1 To iRow Cells(i,1)=i Cells(i,2)=i * 2 Cells(i,3)=i * 4 Cells(i,4)=i * 6Next[G1].Value=Format(Timer - t, 0.00)i=0Rem数组操作用时定义一个很大维度范围(“A1:D”箭头)。ClearContentst=TimerDim arr(1到10000,1到4)对于i=1到iRow arr(i,1)=i 序号arr(i,2)=i * 2 arr(i,3)=i * 4 arr(i,4)=i * 6NextRange(A1 ).Resize(UBound(arr,1),UBound(arr,2))=arr[G2].Value=Format(Timer - t, 0.00)i=0Rem用字典数数重定义数组维度范围(“A1:D”箭头)。clear contentst=TimerSet Mydic=CreateObject(脚本。词典")"创建一个字典放结果for I=1 To iRow A=I * 2 B=I * 4 C=I * 6 Mydic(n)=A B cn exti=0 redim myarr(1 To Mydic .计数,1到4)I=1到Mydic .Count myarr(i,1)=i myarr(i,2)=Split(Mydic(n), )(0) myarr(i,3)=Split(Mydic(n), )(1) myarr(i,4)=Split(Mydic(n), )(2)NextRange(A1 ).Resize(UBound(myarr),UBound(myarr,2))=myarr[G3].Value=Format(Timer - t, 0.00 )I=0 rem ReDim Preserve arr range( A1 :D iRow).clear contentst=timer for I=1 To iRow ReDim Preserve brr(1 To 4,1 To i) brr(1,i)=i brr(2,i)=i * 2 brr(3,i)=i * 4 brr(4,i)=i * 6NextRange(A1 )。Resize(i,4)=1应用程序。转置(brr)G4 .值=格式(计时器- t, 0.00 )应用程序ScreenUpdating=TrueEnd SubVBA。关于数组迪姆,雷迪姆保护区运行速度对比思考如何插入一段漂亮的代码片以前看教程经常有人说雷迪姆保护区动态定义数组运行速度非常慢,特做测试分析是否真的想网友说的雷迪姆保护区真的不堪重用经测试得出一下结论:1、ReDim保留的速度快慢对语句的次数比较敏感。循环100万次,10万次,1万次,对单元格赋值,暗淡数组,用字典的数数次数定义数组维度,及雷迪姆保护区动态定义数组,运行时间如下:在这里插入图片描述大家会发现动态数组运行起来每增加10倍次数,时间却增加100倍,但是如果是对于i=1000000到一步-1时,100瓦次也就2秒左右,综上所述,直接定义一个较大维度的数组写代码比较简单,速度也能接受,但是10W次一次的循环直接雷迪姆保护区也可以接受先赋值给字典,然后用字典的数数计数再定义字典,写起来稍微麻烦,但速度快。

  测试代码如下:如何插入一段漂亮的代码片去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的代码片。//突出显示的blockSub测试用时()维度n,I,sr$,A$,B$,C$,Mypath$,brr()应用程序屏幕更新=FalseRem单元格操作用时iRow=10000Range(A1:D iRow).清除contentst=timer my path= C:\ Users \ DDN \ Desktop \ test \ * .*For i=1 To iRow Cells(i,1)=i Cells(i,2)=i * 2 Cells(i,3)=i * 4 Cells(i,4)=i * 6Next[G1].Value=Format(Timer - t, 0.00)i=0Rem数组操作用时定义一个很大维度范围(“A1:D”箭头)。ClearContentst=TimerDim arr(1到10000,1到4)对于i=1到iRow arr(i,1)=i 序号arr(i,2)=i * 2 arr(i,3)=i * 4 arr(i,4)=i * 6NextRange(A1 ).Resize(UBound(arr,1),UBound(arr,2))=arr[G2].Value=Format(Timer - t, 0.00)i=0Rem用字典数数重定义数组维度范围(“A1:D”箭头)。clear contentst=TimerSet Mydic=CreateObject(脚本。词典")"创建一个字典放结果for I=1 To iRow A=I * 2 B=I * 4 C=I * 6 Mydic(n)=A B cn exti=0 redim myarr(1 To Mydic .计数,1到4)I=1到Mydic .Count myarr(i,1)=i myarr(i,2)=Split(Mydic(n), )(0) myarr(i,3)=Split(Mydic(n), )(1) myarr(i,4)=Split(Mydic(n), )(2)NextRange(A1 ).Resize(UBound(myarr),UBound(myarr,2))=myarr[G3].Value=Format(Timer - t, 0.00 )I=0 rem ReDim Preserve arr range( A1 :D iRow).clear contentst=timer for I=1 To iRow ReDim Preserve brr(1 To 4,1 To i) brr(1,i)=i brr(2,i)=i * 2 brr(3,i)=i * 4 brr(4,i)=i * 6NextRange(A1 )。Resize(i,4)=1应用程序。转置(brr)G4 .值=格式(计时器- t, 0.00 )应用程序屏幕更新=真实结束子标记1794字数100 行数当前行13, 当前列0 HTML 1685字数77 段落拖拽到此处图片将通过法特昆完成下载

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: