cls
break on
dim $rc
$rc=setoption('NoVarsInStrings','on')
$rc=setoption('Explicit','on')
dim $StartStringLength, $FinalStringLength, $StringSegmentLength, $StringSegmentsToAdd
dim $SegmentCount, $CurrentStringLength, $CurrentSize, $StringSegment
dim $TimerStart, $TimerStop, $TimerTotal
$TimerStart = @TICKS
$StartStringLength = 0
$FinalStringLength = 25000000000
$StringSegmentLength = 10000000
$StringSegmentsToAdd = cdbl($FinalStringLength)/$StringSegmentLength
dim $StringSegmentPart[$StringSegmentLength/1000], $String[cdbl($StartStringLength)/$StringSegmentLength]
$StringSegmentPart = join($StringSegmentPart,'abcdefghij')
$StringSegment = ''
for $SegmentCount = 1 to 100
$StringSegment = $StringSegment+$StringSegmentPart
next
$SegmentCount = 0
if ubound($StartStringLength)
$String=join($String,'abcdefghij')
endif
? 'String Length Start = ' + formatnumber(len($String),0,-1)
? 'String Length Final = ' + formatnumber($FinalStringLength,0,-1)
? 'String Segment Length = ' + formatnumber(len($StringSegment),0,-1)
? '# Segments To Add = ' + formatnumber($StringSegmentsToAdd,0,-1)
while $SegmentCount<$StringSegmentsToAdd and not @ERROR
$String=$String+$StringSegment
$SegmentCount=$SegmentCount+1
$CurrentStringLength=cdbl(len($String))
$CurrentSize=val($CurrentStringLength/1024/1024)
? 'Current String Length ('+formatnumber($SegmentCount,0,-1)+')=' +formatnumber($CurrentStringLength,0,-1)+ '='+formatnumber($CurrentSize,0,-1)+' MB'
loop
$TimerStop = @TICKS
$TimerTotal = $TimerStop-$TimerStart
if not @ERROR
? 'Final String Length ('+formatnumber($SegmentCount,0,-1)+')=' +formatnumber($CurrentStringLength,0,-1)+ '='+formatnumber($CurrentSize,0,-1)+' MB'
? 'Script Running Time: '+$TimerTotal
else
? 'Error at step '+$SegmentCount+'='+formatnumber(len($String),0,-1)+'='+formatnumber(cdbl(len($String))/1024/1024,0,-1)+' MB'
? 'Script Running Time: '+$TimerTotal
endif
exit 0 |