Aktív témák
-
Protezis
őstag
Miert tetted OFF-ba? Szerintem nagyon is ide tartozik.
Nem misztifikalom tul, legalabbis nem ez volt a celom. Amiket leirtal, azokrol mind tanultam mind elmeleti, mind gyakorlati sikon (Occam, Java). Ettol fuggetlenul peldaul volt olyan, hogy algoritmusok es adatszerkezetek tantargy kot.programjanal ki volt kotve, hogy nem lehet tobb szalat inditani
Es most tekintsunk el attol, hogy adott esetben celszeru lett volna, vagy sem.
Raadasul ha visszaemlekszel (ha vissza kell, nekem nem, en meg egyetemista vagyok), akkor azokon a programozos orakon, ahol nem a parhuzamos programozas volt a kozeppontban, meg tudod mondani, hanyszor lattal/irtal tobbszalu programot? En igen: 0.
-
kicsitomi88
őstag
Nagyon köszönöm mindenkinek a valaszt, csak annyi gondom van, hogy az eletbe nem csinaltam meg hasonlot sem.
Tehat ha jol gondolom a feladatom az, hogy a szokott modon beolvasott adatokat egy elore kigondolt adatszerkezetbe helyezzem el amin vegrehajthato a dikjstra algoritmus. Miert is erzem ugy, hogy ezt elobb tanulni(tanitani) kene mint csinalni(feladni otthonra)...
Na jolvan, azt hiszem most egy kis olvasgatas jon a listas szerkezetrol.
-
bambano
titán
Linuxban is lehet stackre programot rakni, mert egy-két dolgot másképp nem tud lefordítani a gcc (trampoline, vagy minek hívják, de annyira nem izgatott, hogy megjegyezzem).
Az mmap függvénynek meg meg lehet adni, hogy hogyan másolja be a lapot, tud readonly-t. Ennyi. Nem bonyolítják túl.
Az, hogy a linux lapoz olvasható lapokat is, még nem mond semmit arról, hogy hova.
open("/lib/tls/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240O\1"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=1241392, ...}) = 0
mmap2(NULL, 1251484, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7de9000
mmap2(0xb7f11000, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x127) = 0xb7f11000
mmap2(0xb7f18000, 10396, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7f18000
close(3) = 0 -
#95904256
törölt tag
A FSTCW+FLDCW+FISTP+FLDCW helyett van gyorsabb TRUNC() megoldás is, most nem ugrik be a teljes kód, régen használtam már. De azért a következő pár sor alapján szerintem kikövetkeztethető a működése:
FIST D[esp]
FILD D[esp]
FCOMPP
FNSTSW AX
TEST AH,xx
Jcc READY
SUB D[esp],1
READY:Ez még mindig kétszer gyorsabb mint a CW regiszter módosításával működő TRUNC().
-
#95904256
törölt tag
Még ha legegyszerűbb módon is hajtod végre a ROUND()-ot, de függvénnyel, akkor is ott marad a szubrutin hívás költsége, és igazából egy ilyen egyszerű függvénynél ez zavar. Mint megmutattad a TRUNC()-ot a Delphi is kifejtette "in-line", de az egyszerűbb! ROUND()-ot nem.
szimpla CALL+RET páros átlagos órajeligénye kontra FLD+FISTP órajeligény
( a CPU általi utasításvégrehajtásba / ütemezésbe most nem bonyolódnék bele, aki ismeri az arhitektúrákat az úgyis tudja hogy mi merre mennyi )
Core2: 18.4 / 9.0
K10: 25.4 / 11.7
K8: 25.2 / 10.6Megjegyezném a példádban szereplő esetben a ROUND()-ot így helyettesíteném:
MOV EAX,ESI
CDQ -
#95904256
törölt tag
Hm... Lehet hogy a trunc() nem a legjobb példa, mert én SSE3-as FISTTP-et használok in-line, ellenben a szintén in-line ( és valóban nem funkcióhívás ) Delphi / C trunc() megoldással. Ennek ellenére a FISTTP kontra FSTCW+FLDCW+FISTP(+FLDCW) kombó sebességbeli különbsége elég látványos.
Jobb példa pl. egy 64 bites lebegőpontos szám kerekítése ( round() ).
Ezt most szedtem ki egy C kódból:
PUSH ECX
PUSH ECX
FSTP Q[ESP]
CALL RoundDouble
POP ECX
POP ECX
...
RoundDouble:
PUSH ECX
PUSH ECX
FLD Q[ESP+0Ch]
FRNDINT
FSTP Q[ESP]
FLD Q[ESP]
POP ECX
POP ECX
RETEzzel szemben az alábbi négysoros jóval gyorsabb:
SUB ESP,08h
FISTP Q[ESP]
FILD Q[ESP]
ADD ESP,08hszerk.: Természetesen ezt a négysorost lehet makróként is használni...
-
#95904256
törölt tag
Aktív témák
Hirdetés
- Magisk
- Apple MacBook
- Merevlemezek megbízhatósága, élettartama
- Samsung Galaxy S21 és S21+ - húszra akartak lapot húzni
- LEGO klub
- CURVE - "All your cards in one." Minden bankkártyád egyben.
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- iOS alkalmazások
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Eltűnhet a Dinamikus Sziget
- További aktív témák...
- AMD Ryzen 7 5700X processzor eladó /Garanciás/
- Xbox Series S + 2 kontroller
- Dell laptop eladó i5 11. gen, 8GB RAM, 512GB SSD, újszerű állapotban!
- Bomba ár! HP EliteBook Folio 1040 G1 - i5-G4 I 8GB I 256GB SSD I 14" HD+ I Cam I W10 I Garancia!
- Bomba ár! HP Elitebook Folio 9470M - i5-3GEN I 8GB I 256GB SSD I 14" I DP I Cam I W10 I Garancia!
- ÁRGARANCIA!Épített KomPhone i5 13400F 32/64GB RAM RTX 4060 Ti 8GB GAMER PC termékbeszámítással
- Telefon felvásárlás!! iPhone 11/iPhone 11 Pro/iPhone 11 Pro Max
- Csere-Beszámítás! Xbox One X 1TB Játékkonzol Olvass! Model 1787
- PlayStation Plus Premium 24 hónapos előfizetés , egyenesen a Sony-tól!
- Újszerű HP 250 G10 - 15.6"FHD IPS - i3-1315U - 8GB - 512GB SSD - Win11 - 1,5 garancia - MAGYAR
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged