- Alacsony profilú, madzagmentes klaviatúrák jöttek a Razer színeiben
- ASUS ROG csúcslap érkezett, ezúttal a "lopakodó" fajtából
- Átvette a DRAM-piac trónját az SK Hynix a Samsungtól
- Pénztárcabarát, ugyanakkor trendi mikrotorony jött a Jonsbótól
- A Linux támogatását vágja meg leginkább az Intel leépítése
- Milyen billentyűzetet vegyek?
- Milyen videókártyát?
- Samsung LCD és LED TV-k
- Intel Core Ultra 3, Core Ultra 5, Ultra 7, Ultra 9 "Arrow Lake" LGA 1851
- TCL LCD és LED TV-k
- DDR4 vs DDR5 vs DDR6 – melyik kell neked?
- Milyen RAM-ot vegyek?
- Androidos tablet topic
- Milyen belső merevlemezt vegyek?
- Először égett le egy újságnál a GeForce RTX 5090
-
PROHARDVER!
Ú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!
- HP 14 Pavilion FHD IPS i5-1135G7 4.2Ghz 16GB RAM 512GB SSD Intel Iris XE Graphics Win11 Garancia
- Aoc 1080p 75hz 27" GRÁTISZ ALZAERGO MONITORKAR!
- HP 15 Pavilion FHD LED Matt Ryzen5 5500U 4.0Ghz 8GB RAM 256GB SSD Radeon RX Vega7 Win11 Garancia
- Gamer Intel Core i5 12400 / 16GB DDR4 / GTX 1660 SUPER 6GB / 256GB NVME SSD / 1TB HDD /
- RAM --- SoDIMM --- SD-DDR1-2-3
- StarTech Thunderbolt 3 TB3DKDPMAW - Dual-4K Dock
- LG 27CN650N-6A - Felhő Monitor - 1920x1080 FHD - 75Hz 5ms - USB Type-C - Quad Core - BT + WiFi
- BESZÁMÍTÁS! Gigabyte AORUS B550M R7 5700X 32GB DDR4 1TB SSD RX 6800 16GB Zalman i3 NEO Gigabyte 850W
- Intel Core i7-8700 / i7-9700 CPU, processzor - Számla, garancia
- HIBÁTLAN iPhone 13 mini 128GB Green -1 ÉV GARANCIA - Kártyafüggetlen, MS3140
Állásajánlatok
Cég: FOTC
Város: Budapest