Size: a a a

2021 September 01

Х

Хоттабыч 🐈... in Powershell Rus
во во, а как тогда создавать pscustom object из хештаблиц тогда?
источник

VB

Vector BCO in Powershell Rus
так речь же про массивы а не про pscustomobject
источник

Х

Хоттабыч 🐈... in Powershell Rus
т.е. для псобжект использование следующей конструкции не несет нагрузки на память?

$foo = @()
$foo += [pscustomobject]@{name= "john"; age=30}
источник

VB

Vector BCO in Powershell Rus
$arr = 1..10 | foreach {
  [PSCustomObject]@{
     ...
  }
}
источник

A

Aleksandr in Powershell Rus
Если используется += operator, то несет
источник

Х

Хоттабыч 🐈... in Powershell Rus
бяда.. тогда как по феншую добавлять в псобжект данные?
источник

A

Aleksandr in Powershell Rus
Ты добавляешь в массив, а не в psobject
источник

A

Aleksandr in Powershell Rus
источник

VB

Vector BCO in Powershell Rus
бахни кофейку ;)
источник

Х

Хоттабыч 🐈... in Powershell Rus
да, видимо надо
источник

AF

Alexey D. Filimonov ... in Powershell Rus
$list = [System.Collections.ArrayList]::new()
[void]$list.Add( [PSCustomObject]@{Name='Ken'; Age=24} )
[void]$list.Add( [PSCustomObject]@{Name='Ben'; Age=23} )
$arr = $list.ToArray()

Тип того
источник

VG

Vasily Gusev in Powershell Rus
Да можно и +=. В 99% случаев тебе пофиг будет на производительность и на то что массив пересоздается. Вот если прижмет - тогда оптимизируй уже.
источник

A

Aleksandr in Powershell Rus
До 10000 можно точно не переживать
источник

VG

Vasily Gusev in Powershell Rus
да вообще из за такой фигни не надо переживать :)
источник

A

Aleksandr in Powershell Rus
До 100к, да можно, но потом будет значительная разница.
источник

VB

Vector BCO in Powershell Rus
знать не помешает :)
я не натыкался на такие сравнения до сегодня :(
источник

A

Aleksandr in Powershell Rus
@(1E1,1E2,1E3,1E4,1E5) | ForEach {
   $Time = (Measure-Command {
       $array = @()
       1..$_ | ForEach {
           $array+=$_
       }
   }).TotalMilliseconds
    [pscustomobject]@{
       Type = '+='
       Time_ms = $Time
       Count = $_
   }

   $Time = (Measure-Command {
       $list = New-Object System.Collections.ArrayList
       1..$_ | ForEach {
           [void]$list.Add($_)
       }
   }).TotalMilliseconds
    [pscustomobject]@{
       Type = 'ArrayList'
       Time_ms = $Time
       Count = $_
   }
} | Sort Count | Format-Table -AutoSize

Type          Time_ms  Count
----          -------  -----
+=            17.9967     10
ArrayList     21.7455     10
+=             1.3912    100
ArrayList      0.9951    100
+=            45.6353   1000
ArrayList      5.6686   1000
+=          1860.4481  10000
ArrayList      32.756  10000
+=        376121.3525 100000
ArrayList    300.7981 100000

Последний результат нагляден
источник

A

Aleksandr in Powershell Rus
6m20s vs 0.3s
источник

VB

Vector BCO in Powershell Rus
thx
источник

PN

Pavel Nagaev in Powershell Rus
Чёйта нельзя, если возможность есть, значит можно. Не рекомендуется или неэффективно другой вопрос. Плюс если массивы мелкие, то почему нет.
источник