Ja, ik weet het, PowerShell hoort om een of andere bizarre reden eigenlijk in Windows Clients thuis en niet in Programming; maar: het gaat hier minder over PS dan over .NET classes.
Situatie: een bepaalde functie die ik schreef expand IP adressen in de CIDR notatie (dus bv. 192.168.0.1/24 naar alle mogelijke adressen). Voor sommige bewerkingen moet ik, met een hoop opzoekingswerk, naar.NET grijpen, zoals [System.Net.IPAddress]::Parse($foo) waarbij $foo een decimaal adres is.
Een collega maakte eerder een gelijkaardige functie in VBS, gebruik makend van dezelfde classes. In beide gevallen viel de performance best tegen: om 280 adressen te expanden heeft mijn machine één minuut nodig. Heeft iemand een theoretisch idee hoe dit kan komen? Mijn huidige vermoeden is dat de .NET classes de boel vertragen: dat is immers het enige dat onze scripts gemeen hebben naast het doel. 280 per minuut lijkt me voor een computer toch wel traag.
Wat al uitgesloten is:
- Read and Write op het netwerk vs. lokaal
- Alle adressen in één array en dan uitschrijven vs. line-per-line uitschrijven
- System resources: in het line-per-line geval wordt slechts 20% CPU gebruikt (en 70MB RAM). De machine zelf is een monster naar workstation normen trouwens.
Het doel van mijn thread is dus niet om code te krijgen - vandaar dat ik geen code post - maar wel wat theoretische gissingen waar de performance onder kan lijden.
In 't echt gaat het over enkele 10 000en adressen trouwens, vandaar de relevantie van de performance.
Situatie: een bepaalde functie die ik schreef expand IP adressen in de CIDR notatie (dus bv. 192.168.0.1/24 naar alle mogelijke adressen). Voor sommige bewerkingen moet ik, met een hoop opzoekingswerk, naar.NET grijpen, zoals [System.Net.IPAddress]::Parse($foo) waarbij $foo een decimaal adres is.
Een collega maakte eerder een gelijkaardige functie in VBS, gebruik makend van dezelfde classes. In beide gevallen viel de performance best tegen: om 280 adressen te expanden heeft mijn machine één minuut nodig. Heeft iemand een theoretisch idee hoe dit kan komen? Mijn huidige vermoeden is dat de .NET classes de boel vertragen: dat is immers het enige dat onze scripts gemeen hebben naast het doel. 280 per minuut lijkt me voor een computer toch wel traag.
Wat al uitgesloten is:
- Read and Write op het netwerk vs. lokaal
- Alle adressen in één array en dan uitschrijven vs. line-per-line uitschrijven
- System resources: in het line-per-line geval wordt slechts 20% CPU gebruikt (en 70MB RAM). De machine zelf is een monster naar workstation normen trouwens.
Het doel van mijn thread is dus niet om code te krijgen - vandaar dat ik geen code post - maar wel wat theoretische gissingen waar de performance onder kan lijden.
In 't echt gaat het over enkele 10 000en adressen trouwens, vandaar de relevantie van de performance.
[ Voor 3% gewijzigd door YellowOnline op 27-07-2010 22:59 ]