- Motorola Edge 50 Neo - az egyensúly gyengesége
- OneOdio Focus A6 – Bluetooth 6-ot olcsón
- Nagyon apró félokos a HMD új mobilja
- Honor Magic6 Pro - kör közepén számok
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Milyen GPS-t vegyek?
- Xiaomi Redmi Note 4 - B20
- Samsung Galaxy S25 - végre van kicsi!
- iOS alkalmazások
- Honor 400 Pro - Gép a képben
- Geri Bátyó: Agglegénykonyha 7 – Még egy megosztó – de gyors – étel: resztelt máj
- Geri Bátyó: Agglegénykonyha 8 – Ami félresikerül, még nem biztos, hogy rossz is
- sziku69: Fűzzük össze a szavakat :)
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
-
Mobilarena
Új hozzászólás Aktív témák
-
válasz
pmonitor #19843 üzenetére
A problema nem az object/struct miatt van, hanem az unboxing miatt, mivel az egyik objektumod object tipusu, ezert az erteket explicite be-, es kicsomagolod (20., 89. es 93. sor). Ez viszi el a plusz idot, nem a GC:
.method private hidebysig static
void Main (
string[] args
) cil managed
{
.custom instance void System.Runtime.CompilerServices.NullableContextAttribute::.ctor(uint8) = (
01 00 01 00 00
)
// Method begins at RVA 0x2094
// Header size: 12
// Code size: 171 (0xab)
.maxstack 6
.entrypoint
.locals init (
[0] int64 i,
[1] int64 j,
[2] int64 m,
[3] class [System.Runtime]System.Diagnostics.Stopwatch sw,
[4] int64 n,
[5] object k,
[6] int64 p,
[7] bool,
[8] bool
)
// {
IL_0000: nop
// long num = 0L;
IL_0001: ldc.i4.0
IL_0002: conv.i8
IL_0003: stloc.0
// long num2 = 0L;
IL_0004: ldc.i4.0
IL_0005: conv.i8
IL_0006: stloc.1
// long num3 = 0L;
IL_0007: ldc.i4.0
IL_0008: conv.i8
IL_0009: stloc.2
// Stopwatch stopwatch = Stopwatch.StartNew();
IL_000a: call class [System.Runtime]System.Diagnostics.Stopwatch [System.Runtime]System.Diagnostics.Stopwatch::StartNew()
IL_000f: stloc.3
// for (num3 = 0L; num3 < 3000000000u; num3++)
IL_0010: ldc.i4.0
IL_0011: conv.i8
IL_0012: stloc.2
// (no C# code)
IL_0013: br.s IL_0020
// loop start (head: IL_0020)
// num = num3;
IL_0015: nop
IL_0016: ldloc.2
IL_0017: stloc.0
// num2 = num;
IL_0018: ldloc.0
IL_0019: stloc.1
// for (num3 = 0L; num3 < 3000000000u; num3++)
IL_001a: nop
IL_001b: ldloc.2
IL_001c: ldc.i4.1
IL_001d: conv.i8
IL_001e: add
IL_001f: stloc.2
// for (num3 = 0L; num3 < 3000000000u; num3++)
IL_0020: ldloc.2
IL_0021: ldc.i4 -1294967296
IL_0026: conv.u8
IL_0027: clt
IL_0029: stloc.s 7
// long elapsedMilliseconds = stopwatch.ElapsedMilliseconds;
IL_002b: ldloc.s 7
IL_002d: brtrue.s IL_0015
// end loop
IL_002f: ldloc.3
IL_0030: callvirt instance int64 [System.Runtime]System.Diagnostics.Stopwatch::get_ElapsedMilliseconds()
IL_0035: stloc.s 4
// for (num3 = 0L; num3 < 3000000000u; num3++)
IL_0037: ldc.i4.0
IL_0038: conv.i8
IL_0039: stloc.2
// (no C# code)
IL_003a: br.s IL_0053
// loop start (head: IL_0053)
// object obj = num3;
IL_003c: nop
IL_003d: ldloc.2
IL_003e: box [System.Runtime]System.Int64
IL_0043: stloc.s 5
// num2 = (long)obj;
IL_0045: ldloc.s 5
IL_0047: unbox.any [System.Runtime]System.Int64
IL_004c: stloc.1
// for (num3 = 0L; num3 < 3000000000u; num3++)
IL_004d: nop
IL_004e: ldloc.2
IL_004f: ldc.i4.1
IL_0050: conv.i8
IL_0051: add
IL_0052: stloc.2
// for (num3 = 0L; num3 < 3000000000u; num3++)
IL_0053: ldloc.2
IL_0054: ldc.i4 -1294967296
IL_0059: conv.u8
IL_005a: clt
IL_005c: stloc.s 8
// long elapsedMilliseconds2 = stopwatch.ElapsedMilliseconds;
IL_005e: ldloc.s 8
IL_0060: brtrue.s IL_003c
// end loop
IL_0062: ldloc.3
IL_0063: callvirt instance int64 [System.Runtime]System.Diagnostics.Stopwatch::get_ElapsedMilliseconds()
IL_0068: stloc.s 6
// Console.WriteLine("{0} {1} {2} {3}", num2, num3, elapsedMilliseconds, elapsedMilliseconds2 - elapsedMilliseconds);
IL_006a: ldstr "{0} {1} {2} {3}"
IL_006f: ldc.i4.4
IL_0070: newarr [System.Runtime]System.Object
IL_0075: dup
IL_0076: ldc.i4.0
IL_0077: ldloc.1
IL_0078: box [System.Runtime]System.Int64
IL_007d: stelem.ref
IL_007e: dup
IL_007f: ldc.i4.1
IL_0080: ldloc.2
IL_0081: box [System.Runtime]System.Int64
IL_0086: stelem.ref
IL_0087: dup
IL_0088: ldc.i4.2
IL_0089: ldloc.s 4
IL_008b: box [System.Runtime]System.Int64
IL_0090: stelem.ref
IL_0091: dup
IL_0092: ldc.i4.3
IL_0093: ldloc.s 6
IL_0095: ldloc.s 4
IL_0097: sub
IL_0098: box [System.Runtime]System.Int64
IL_009d: stelem.ref
// (no C# code)
IL_009e: call void [System.Console]System.Console::WriteLine(string, object[])
// Console.ReadKey();
IL_00a3: nop
IL_00a4: call valuetype [System.Console]System.ConsoleKeyInfo [System.Console]System.Console::ReadKey()
IL_00a9: pop
// }
IL_00aa: ret
} // end of method Program::MainAz optimalizalt valtozatot nezve jol lahthato a ket "felesleges" utasitas:
// loop start (head: IL_0018)
IL_0011: ldloc.1
IL_0012: stloc.0
vs// loop start (head: IL_003e)
IL_002d: ldloc.1
IL_002e: box [System.Runtime]System.Int64
IL_0033: unbox.any [System.Runtime]System.Int64
IL_0038: stloc.0
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
- Másodszor is nekifut az AI PC-k meghódításának a Qualcomm
- Motorola Edge 50 Neo - az egyensúly gyengesége
- A Synology visszatáncolt a saját márkás HDD-k megkövetelésének kapcsán
- Philips LCD és LED TV-k
- OneOdio Focus A6 – Bluetooth 6-ot olcsón
- Elszipkázza az olvasókat a nagyobb weboldalaktól az AI
- Nagyon apró félokos a HMD új mobilja
- Már nem tudni, hogy mikor kerülhetnek piacra a DGX Spark gépek
- Honor Magic6 Pro - kör közepén számok
- BestBuy topik
- További aktív témák...
- 2 TB-os Kingston NV3 M.2 SSD - 6000 MB/s olvasás
- új akku Ár/ÉRTÉK BAJNOK! Dell Latitude 5330 i3-1215U 6magos! - 16GB 256GB 13.3" FHD 1 év garancia
- HIBÁTLAN iPhone 13 256GB Red -1 ÉV GARANCIA - Kártyafüggetlen, MS3428
- LG 27UN880-B - 27" IPS ERGO - 3840x2160 4K - 60Hz - DisplayHDR 400 - USB Type-C - AMD FreeSync - Mac
- GYÖNYÖRŰ iPhone 13 128GB Midnight -1 ÉV GARANCIA - Kártyafüggetlen, MS3580, 95% Akkumulátor
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest