Kezdőoldal » Számítástechnika » Programozás » C# faktorzáció gyors (abb) an?

C# faktorzáció gyors (abb) an?

Figyelt kérdés
Olyan külső komponenst (az se baj, ha ingyenes, vagy netalán opensource) keresek, ami gyorsan tud egy egész számot prímtényezőire bontani. Tudom, hogy NP teljes probléma, de az általám írt algoritmus kb 1-2 mp alatt tud egy 64 bites számot felbontani (ami 2db 32 bites szorzata), míg a maplénak ez kb 0 idő. A saját algoritmusom 6-osával lépked a szám gyökétől lefelé, és a 6k+1 és 6k+5 alakú számokkal való oszthatóságot vizsgálja, de nyílván ettől van sokkal jobb is. Ilyen .NET-ből használható komponenst keresek. (Tudom, hogy Maple-t is meg lehet hívni .NET-ből, de valami hordozhatóbb méretűt szeretnék:))
2011. okt. 15. 15:23
 1/4 anonim ***** válasza:

Ajánlom az intel assembler nyelvet a C# hányadék helyett, ennél gyorsabb programot amúgy sem lehet írni.


[link]

2011. okt. 15. 16:01
Hasznos számodra ez a válasz?
 2/4 _Jessy_ ***** válasza:
Valószínűleg a maple prímadatbázist használ hozzá, így sokkal gyorsabb. És az előttem szólónak igaza van, C# erre nem igazán alkalmas. Én egy kettőhatvány számolót írtam meg, C#-os program 100000. hatványt 80+ másodperc alatt számolta, ugyanez assembly-ben 20 másodperc.
2011. okt. 15. 18:07
Hasznos számodra ez a válasz?
 3/4 A kérdező kommentje:

Nem kell, hogy c# nyelven legyen megírva az adott lib, tőlem lehet akár assembly is, az a lényeg, hogy meg tudjam hívni C#-ból. Én magam nem szeretném assemblyben leimplementálni az egészet, mert azért egy faktorizációt leimplementálni szívás (Kivéve persze ha csak megnézzük az oszthatóságot sorban, de ennél lehet jobb algoritmust is írni, amit már sokkal könynebb c#ban, és gyorsabb is lesz, mint a gagyin megírt assemblys).


2^100000 kiszámítása 20mp?? Nekem C#-ból a következő sorral:

string a = BigInteger.Pow(2, 100000).ToString();

93millisec.

Pl ebből is látszik, hogy leimplementáltad asseblyben, de magasabb szintű nyelven sokkal gyorsabban már más leimplementálta. Megnéztem a forrását reflecotrral, 100% managed kód.

2011. okt. 16. 10:54
 4/4 _Jessy_ ***** válasza:
Nem azt írtam, hogy jó az algoritmusom, azt csak úgy összedobtam, csak azt akartam vele mondani, hogy a assembly-hez képest a szuper managed kód 4x annyi futásidejű. De ha nem hiszed, akkor egyszerű dolgot próbálj ki, meglátod h. mekkora a különbség. Írj managed kódban egy üres ciklust, ami 0x00000000 -tól 0xffffffff -id számol, aztán ugyanezt assembly-ben, és mérd le a futásidejét!
2011. okt. 16. 14:06
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!