Summe von Potenzen
#11
Es gibt "spürbare" 05  Laufzeitunterschiede und SEQUENZ bzw. das erzeugte Array muss früher passen 

Code:
Option Explicit

Private Declare Function getFrequency Lib "kernel32" _
Alias "QueryPerformanceFrequency" (cyFrequency As Currency) As Long
Private Declare Function getTickCount Lib "kernel32" _
Alias "QueryPerformanceCounter" (cyTickCount As Currency) As Long

Function MicroTimer() As Double

  'Returns seconds.

  Dim cyTicks1 As Currency
  Static cyFrequency As Currency
  MicroTimer = 0

  ' Get frequency.
  If cyFrequency = 0 Then getFrequency cyFrequency

  ' Get ticks.
  getTickCount cyTicks1

  ' Seconds
  If cyFrequency Then MicroTimer = cyTicks1 / cyFrequency
End Function

Sub Tester()
    Dim tStart As Double
    Dim tEnd As Double
    Dim i As Long
    Dim j As Double

    Dim maxVal(1 To 3) As Double
    Dim res As Double

    maxVal(1) = 10000
    maxVal(2) = 100000
    maxVal(3) = 1000000
   
   

    Dim v
    For Each v In maxVal

        tStart = MicroTimer
        res = WorksheetFunction.Sum(WorksheetFunction.Sequence(v))
        tEnd = MicroTimer
        Debug.Print v, res, tStart, tEnd, Round(tEnd - tStart, 5)


        tStart = MicroTimer
        res = v * (v + 1) / 2
        tEnd = MicroTimer
        Debug.Print v, res, tStart, tEnd, Round(tEnd - tStart, 5)

    Next v
   
    ' Sequence scheitert
    v = 10000000
    tStart = MicroTimer
    res = v * (v + 1) / 2
    tEnd = MicroTimer
    Debug.Print v, res, tStart, tEnd, Round(tEnd - tStart, 5)

End Sub
Ergebnis 
PHP-Code:
10000         50005000                    385454,7089372              385454,7135735              0,00464 
10000         50005000                    385454
,7166538              385454,7166557              0 
100000        5000050000                  385454
,7181476              385454,728514               0,01037 
100000        5000050000                  385454
,7300566              385454,730058               0 
1000000       500000500000                385454
,7314826              385454,8267533              0,09527 
1000000       500000500000                385454
,8283569              385454,8283587              0 
10000000      50000005000000              385454
,8297901              385454,8297911              0 
[-] Folgende(r) 1 Nutzer sagt Danke an Warkings für diesen Beitrag:
  • Thomas Ramseier
Antworten Top
#12
Hat super funktioniert, vielen Dank

Vielen Dank, hat super funktioniert
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste