Läste med intresse Fredrik Normén : Tips o Trix (det senaste) Som vanligt vet du inte vad du talar om. Nu är ju detta knappast något man behöver tänka på i en normalapplikation. Vill först tacka dig för din feedback. Inte änns på pellesoft kan man slippa att folk hoppas på tekniker annat än de de själv utnyttjat. Och ovan på allt så sker det inte i skrivklåda och inte heller markeras posten som "löst" för att man skall slippa se eländet gång på gång.Vilken röra.
Inget fel på Fredrik.s tips och hur han beskriver det, mycket bra !
Men vilken djä... röra ,snacka om att timpenning per utvecklat projekt kommer att skjuta i höjden..
Stackars programmerare som tvingas in i detta elände.
Ännu har ingen bevisat för mig att detta är någon form av framtid.
Gör inte anspråk på att kunna något om denna teknik,men om man tyckte
att C var svårtillgängligt så kommer detta vara sju resor djävligare.
Det har iofs det goda med sig att programmerare som omfattar detta verktyg
får mycket högre status och oengagerade "charlataner" knuffas ut i den binära rymden.
Linux användare läs och njut av Fredrik:s beskrivning av ett simpelt problem.
Än en gång inget ont om Fredrik och det han skriver.Sv: Vilken röra.
Fredrik beskriver ett antal prestandatrix som kan utnyttjas om man i något kritiskt läge behöver pressa ur det mesta ur kompilator,ramverk och språk. I de allra flesta fall behöver man inte alls bry sig om sådana här saker.
Motsvarande prestandatrix finns i alla språk och alla platformar. Inklusive Delphi, och det är lika jäkla jobbigt att lära sig trixen där som det är i .Net.Sv: Vilken röra.
I exemplet nedan loopar jag igenom en array som har 10 000 element 10 000 gånger. Den "ooptimerade" koden tar ca 400 millisekunder medans den optimerade tar ca 250 millisekunder (på min maskin).
Ingen gigantiskt skillnad alltså och knappast något att bry sig om om man har en liten array som man loopar igenom få gånger. Inte heller Fredriks tips angående GC och strukturer borde påverka prestandan speciellt mycket i normalfall.
Men - vill man ha den absolut bästa prestandan gäller det att ta till alla knep man kan. Oftast blir det då lite krångligare och mer omständigt, men det gäller för alla programmeringsspråk.
<code>
using System;
public class Test
{
public static void Main()
{
object[] myArray = new object[10000];
int t1=0, t2=0, loops=10000;
t1 = Environment.TickCount;
for(int j=0;j<loops;j++)
{
//Range check kommer inte att göras, ökad prestanda.
for( int i = 0; i < myArray.Length; i++ )
{
Object o = myArray[i];
}
}
t2 = Environment.TickCount;
Console.WriteLine("Ticks: " + (t2-t1));
t1 = Environment.TickCount;
for(int j=0;j<loops;j++)
{
//Range check kommer att utföras, påverkar prestandan negativt.
for( int i = 1; i < myArray.Length+1; i++ )
{
Object o = myArray[i-1];
}
}
t2 = Environment.TickCount;
Console.WriteLine("Ticks: " + (t2-t1));
}
}
</code>
Mvh JohanSv: Vilken röra.
Som de andra har sagt i inlägget så är det inget man igenltigen behöver bry sig så mkt om. Detta kan vara bra att tänka på när man bygger enterprise system med flera hundra användare som ska utföra komplexa och stora loopar. Optimeringen av loopar ser man mest skillnand när man loopar genom jagged arrays.
Nästa version av .Net kommer att har mycket mer att erbjuda och bättre möjligheter än .Net har idag. Hörde senast idag från Microsoft att de satsar stenhårt på enterprise lösningar och att nästa version av .Net kommer att ha ännu högre prestanda än vad den har nu. Vilket språk eller platform du väljer så finns det alltid små trix som gör koden snabbare, jag skrev om några få har mer på lager :). Om du programmerar utan att ens tänka tanken på de små små optimeringar som stog i mitt tips så kan jag nästan lova dig att du inte kommer att märka så stor skillnad.
/Fredrik NSv: Vilken röra.
Sven.. inse att det finns plats för alla språk.. rätt verktyg för rätt tillfälle.. rätt OS för rätt tillfälle
*suck* vad man kan vara trångsynt ibland alltså.
---
<b>Andreas Håkansson
Student of Software Engineering</b>