strings – operaciones rapidas con powershell

Quick Tip: Strings – como realizar operaciones rapidas con powershell.

concatenar strings

Cuando realizamos procesos costosos en tiempo debido a que hay que tratar miles o incluso millones de elementos (por ejemplo, strings) hay que buscar la forma de optimizar el código al máximo.

Por eso quiero mostraros la forma más eficiente de utilizar la concatenación de strings en powershell:

$slow = ''
(Measure-Command {
 for ($x = 1; $x -lt 10000; $x += 1) {
 $slow += "I’ve just logged step $x"
 }
}).TotalMilliseconds

El código anterior es la forma habitual de concatenar strings en powershell, es decir, el operador += es la forma que todos pensamos en usar cuando quieres concatenar texto.

Ejecutando ese código se obtiene el tiempo en milisegundos de concatener 10000 strings.

A continuación os voy a mostrar la forma más eficiente de hacer esto mismo aprovechandonos de la clase StringBuilder de .Net:

$fast = [System.Text.StringBuilder]''
(Measure-Command {
 for ($x = 1; $x -lt 10000; $x += 1) {
 $fast.AppendLine("I’ve just logged step $x") | Out-Null
 }
}).TotalMilliseconds

Si utilizais este método recordar usar el commandlet Out-Null para no mostrar la salida del método AppendLine, ya que este además de concatenar strings muestra por pantalla el texto añadido.

Si comparáis los tiempos vais a quedar impresionados. En mi caso los tiempos han sido de 1590ms frente a 690ms, lo que ya de por se ve un ahorro de tiempo interesante. Pero escalando el ejemplo a 100000 ejecuciones la diferencia de tiempo es realmente asombrosa. En mi equipo los resultados han sido de 176,3 segundos frente a 5,7 segundos, creo que las cifras hablan por si solas.

Podéis ver el artículo original en: powershell.com

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *