Benchmark.ps1

Import-Module .\Benchmark.psm1 -force
Import-Module .\ConvertFrom-JsonFast.psm1 -force

$jsonElement = (ConvertFrom-Json -Ashashtable -InputObject (Get-Content -raw -path (Join-Path $PSScriptRoot "element.json")))

$jsonArray = [System.Collections.Arraylist]::new()

foreach ($i in 1..750000) { [void] ($jsonArray.add($jsonElement)) }

$json = ConvertTo-Json $Jsonarray -depth 5

$Iterations = 1

write-host "Starting JSON Parsing Benchmark with a $($json.length / 1MB) MB file" 
write-host ""

$Scenarios = @(
    @{
        "Name" = "Do Nothing"
        "ScriptBlock" = { $Nothing = $i; $potato = $nothing }
    }
    
    @{
        "Name" = "Built-in Cmdlet: Hashtable"
        "ScriptBlock" = { ConvertFrom-Json -Ashashtable $Json }
    }
    @{
        "Name" = "Built-in Cmdlet: PSCustomObject"
        "ScriptBlock" = { ConvertFrom-Json $Json }
    }
    @{
        "Name" = "CustomCmdlet: Hashtable"
        "ScriptBlock" = { ConvertFrom-JsonFast $Json }
    }
    
)

Perform-Scenarios -Scenarios $Scenarios -Iterations 1