(12-12-2021, 00:08)vuott escribió: No hay nada especial: ".push ()" es el método ordinario de insertar un valor en un array, aumentando así dinámicamente el número de sus elementos.
Cierto. Me temo que es el método equivalente a .add, que he usado siempre.
El código de Cogier no es exactamente igual a lo que quiero hacer. Pero ha resumido todo el funcionamiento del benchmarh en un solo procedimiento.
Ha usado una nueva forma que usa Gambas en definir la variable de control del bucle. Suelo usar la tradicional. Declaración primero.
Siempre se aprende de los compañeros.
Cogier repite un millón de veces la inserción de la primera palabra del array, luego la segunda y así hasta finalizar.
No es eso, ya que lo que busco es que el número de veces que se va a repetir cada palabra es indeterminado.
Así puede insertarse tres veces la palabra galleta y luego cinco veces la palabra merengue.
Con el benchmark ese proceso se debe repetir un millón de veces.
Usando su código, esto si es lo que quiero:
Código:
Public Sub Main()
Dim sFood As String[] = ["biscuits", "meringues"]
Dim sArray As New String[]
Dim dTim As Date = Time(Now)
Randomize
For iArray As Integer = 0 To 10 ^ 6
'Se repite n veces la primera palabra, n veces la segunda palabra
For iTimes As Integer = 0 To Rand(1, 10)
For iFood As Integer = 0 To sFood.Max
sArray.Push(sFood[iFood])
Next
Next
Next
Print Format(DateDiff(dTim, Time(Now), gb.Millisecond) / 1000, "0.######") & "s"
End
En un I5-8400 me da este resultado: 1,025s
Es un poco más lento que el método LlenarArray2 y algo más lento con respecto a LlenarArray3.
Podía ser algo como esto:
Código:
Public Sub LlenarArray4a(palabra As String, veces As Integer) As String[]
Dim apalabras As New String[]
For i As Integer = 0 To veces - 1
apalabras.add(palabra)
Next
Return apalabras
End
Y repetir eso un millón de veces. Lo que viene a decir que en vez de usar bucles es mejor usar los métodos que dispone el tipo String[]
Saludos