Hirdetés

2024. május 4., szombat

Gyorskeresés

Hozzászólások

(#5151) dabadab válasza don_peter (#5150) üzenetére


dabadab
titán

Ez ugy nez ki, mint egy structot inicializo ertek (ami struct maga is all ket darab structbol, amik darabonkent egy intbol meg egy nyolcelemes int arraybol allnak).

( struct init, array init)

[ Szerkesztve ]

DRM is theft

(#5152) EQMontoya válasza don_peter (#5150) üzenetére


EQMontoya
veterán

Nem ragoznám túl, a dabadab által leírt megoldás helyes, de érdekelne, hogy ilyet hol találtál... :)

Same rules apply!

(#5153) don_peter válasza dabadab (#5151) üzenetére


don_peter
senior tag

Köszönöm, én is erre kanyarodtam, már mint, hogy kétdimenziós tömb és valamilyen adatszerkezet vagy struktúra..
Kérhetnék tőled egy kis példát miképpen oldanád meg ezt a 2db struct-ot?

----== Neo Geo és Arcade Fórum : www.neo-geo.hu ==----

(#5154) don_peter válasza EQMontoya (#5152) üzenetére


don_peter
senior tag

Tulajdonképpen egy program generálja le ezt a definíciót, amellyel aztán egy chip felkonfigurálását lehet megoldani.
Az adatszerkezetet eddig nem önmagában, hanem lebontva használtam fel, de szeretném kicsit felgyorsítani a tesztelést, így gondoltam a legenerált definíciót felhasználva gyorsítanám meg a dolgot..

Ebből a definícióból csak a hosszabb sorok az értékes adatok, ezeket az adatsorokat egymás után kell elküldenem így a külön álló 0x00-ák nem lehetnek közöttük..

[ Szerkesztve ]

----== Neo Geo és Arcade Fórum : www.neo-geo.hu ==----

(#5155) don_peter


don_peter
senior tag

Köszönöm srácok a segítséget.
Végül így oldottam meg:

const struct setup_t {
char dummy;
char command[32];
} valami[] = SETUP_MESSAGES_CONTENT;

----== Neo Geo és Arcade Fórum : www.neo-geo.hu ==----

(#5156) dabadab válasza don_peter (#5153) üzenetére


dabadab
titán

"Kérhetnék tőled egy kis példát miképpen oldanád meg ezt a 2db struct-ot?"

struct a
{
int foo;
int bar[8];
};

struct b
{
struct a x;
struct a y;
};

int main(void)
{
struct b var = SETUP_MESSAGES_CONTENT;
printf("%02x\n",var.x.bar[1]);
return 0;
}

(Ez 06-ot fog kiirni.)

[ Szerkesztve ]

DRM is theft

(#5157) don_peter válasza dabadab (#5156) üzenetére


don_peter
senior tag

Köszi, közben persze rájöttem, hogy nekem ez nem jó mert elég rugalmatlan.
A tömbösített jobb mert könnyebben tudom bejárni..
Azért köszi a rávezetést, sokat segített.

----== Neo Geo és Arcade Fórum : www.neo-geo.hu ==----

(#5158) EQMontoya válasza don_peter (#5157) üzenetére


EQMontoya
veterán

Nem olyan bonyolult azért írni egy fv.-t, ami szerializálja, ha mindenképp bejárni szeretnéd valahogy.

Same rules apply!

(#5159) DrojDtroll válasza emvy (#5145) üzenetére


DrojDtroll
addikt

Ezt at lehet alakitani rekurzio nelkulire, ha ugy tartja kedved.

Igen, úgy tartja kedvem, csak nem tudom hogyan lehetne megcsinálni.

Valaki tud segíteni, hogyan sikerülhetne ezt átalakítani?

(#5160) axioma válasza DrojDtroll (#5159) üzenetére


axioma
veterán

Te kell karban tarts egy vektort, amit veremnek hasznalsz, vagy egy valtozot ahol visszafele lepeskor is adminisztralod a valtozast, vagy lehet akar minden elorefele lepesnel megszamolni...
Az algobol eleve kiesik egy info, eleg az a-kat szamolni, mert (ha jol vettem ki) x=y+z igy b kovetkezik, sot a koztes lepeseknel is tudod, mert egy index ugyis kell hogy hol tartasz a veremben, az pont jelzi az aktualis hosszt.
De ezt en nem feltetlen igy csinalnam... ha a kerdes algoritmikus es nem programozastechnikai. Eloszor is kevesebb lepes, ha a run-length kodolas alapjan me'sz (minden lepesben nem 1 db valamelyik karaktert teszel le, hanem 1-tol az adott betubol visszalevoig barmennyit a betuket valtogatva, a legelejen megengedheto de cask ott a 0 db).
Masreszt ez az n alatt a k tipikus esete (x alatt az y), es mivel iszonyat gyorsan nonek ezek a szamok, igy ha ki kell iratni, akar arra is lehet tamaszkodni, hogy bele fog ferni egy nagyobbacska int-be a bitenkenti abrazolassal... az int-ben meg tudod szamolni - persze csak ciklusban de a stringnel joval gyorsabban - a bitek szamat, es csak ami jo azt konvertalod a-b-re.)
Valamelyik pszeudot osszedobhatom, ha gondolod, de mindet inkabb nem.

(#5161) DrojDtroll válasza axioma (#5160) üzenetére


DrojDtroll
addikt

Köszönöm szépen a leírásod, :R :R :R de az utolsó módszerhez hasonlóan már megy. Növelek egy számot és bitenkénti ábrázolása megnézem, benne az 1 és 0-ák számát. és ami megfelel azzal dolgozok.

(#5162) don_peter


don_peter
senior tag

Kedves kollégák,

Egy olyan algoritmust kérnék tőletek amely egy 8bit-es vagy is 1 byte-ot fordít meg.
Pl: ből - re
00000011 - 11000000
A lényeg, hogy a lehető legkevesebb erőforrást igényeljen a bitművelet.
Egy olyan rutin kellene ami nagyon gyorsan és pontosan illetve rugalmasan dolgozik mert nagyon sok különböző adatot kell felcserélni..
(Azért nem én álltam neki megírni a rutint, mert, itt kevés az, hogy jól működik, itt sokat számít, hogy a lehető leggyorsabb és legkevesebb erőforrást igényelve cserélje fel a bitsorozatot.)
Előre is köszi... (egyébként egy makró vagy struktúra is jó lehet, ha az gyorsabb)

----== Neo Geo és Arcade Fórum : www.neo-geo.hu ==----

(#5163) dabadab válasza don_peter (#5162) üzenetére


dabadab
titán

ha tényleg gyors kell, akkor lookup table, ráadásul az csak 256 byte, szóval még túl nagy helyigénye sincs.

DRM is theft

(#5164) don_peter válasza dabadab (#5163) üzenetére


don_peter
senior tag

Azt hogy kell megvalósítani?
Tán ami itt van az jó lehet: [link]

[ Szerkesztve ]

----== Neo Geo és Arcade Fórum : www.neo-geo.hu ==----

(#5165) EQMontoya válasza don_peter (#5164) üzenetére


EQMontoya
veterán

Igen, az tökéletes. Főleg, hogy Neked csak egy bájtra kell.
Nemes egyszerűséggel indexeled vele a lookup tablet (erre van gyártva), és kész vagy.

Éljen a gugli-copy-paste pattern. :)

Same rules apply!

(#5166) don_peter válasza EQMontoya (#5165) üzenetére


don_peter
senior tag

Igen ezt korábban is néztem már, de nem tudom PIC (mikrokontroller) esetében ez a megoldás mennyire lehet erőforrás kémillő megoldás... Vélemény?

És valaki el tudná magyarázni a működését?

[ Szerkesztve ]

----== Neo Geo és Arcade Fórum : www.neo-geo.hu ==----

(#5167) EQMontoya válasza don_peter (#5166) üzenetére


EQMontoya
veterán

Hát józan paraszti ésszel nézve is 256byte-ot fogyaszt a lookup table, valamit egy indexelést hajtasz végre (ami ugye gyakorlatilag egy összeadás - tömb kezdetének címe+index).
Ez még egy kenyérpirítón is gyors lesz.

Működés: a tömbben minden indexen az adott byte megfordítottja van, csak nyilván hexában van leírva.
Tehát pl.
tömb[1] = 0b00000001 megfordítása = 0b10000000 = 0x80.
tömb[17] = 0b00010001 megfordítása = 0b10001000 = 0x88.

[ Szerkesztve ]

Same rules apply!

(#5168) don_peter válasza EQMontoya (#5167) üzenetére


don_peter
senior tag

Ez a része nem világos:
// Option 1:
c = (BitReverseTable256[v & 0xff] << 24) |
(BitReverseTable256[(v >> 8) & 0xff] << 16) |
(BitReverseTable256[(v >> 16) & 0xff] << 8) |
(BitReverseTable256[(v >> 24) & 0xff]);

Itt 8bit-nél is ezt az egész sort kell használni?

----== Neo Geo és Arcade Fórum : www.neo-geo.hu ==----

(#5169) EQMontoya válasza don_peter (#5168) üzenetére


EQMontoya
veterán

Ez arra kell, hogy az egész byteot megfordítsa, ha megnézed. :)
Egy bytehoz Neked csak a tömböt kell indexelni, semmi mást.

Same rules apply!

(#5170) don_peter válasza EQMontoya (#5169) üzenetére


don_peter
senior tag

Huu basszus... Nem esett le, hogy megnézzem a tömb-ben felvett hexák értékét..
Köszi, most már értem.
1bájthoz csak indexelnem kell :D

[ Szerkesztve ]

----== Neo Geo és Arcade Fórum : www.neo-geo.hu ==----

(#5171) jattila48 válasza don_peter (#5162) üzenetére


jattila48
aktív tag

Hirtelen ez jutott eszembe, de biztos van gyorsabb módszer is:

unsigned char reverse_bits(unsigned char x)
{
unsigned char y=0;
y=y | ((x & 0x80) >> 7);
y=y | ((x & 0x40) >> 5);
y=y | ((x & 0x20) >> 3);
y=y | ((x & 0x10) >> 1);
y=y | ((x & 0x8) << 1);
y=y | ((x & 0x4) << 3);
y=y | ((x & 0x2) << 5);
y=y | ((x & 0x1) << 7);

return y;
}

„Kétségtelen, hogy nem tudjuk, mit tegyünk, de felkészültek és elszántak vagyunk.” - Olaf Scholz német kancellár

(#5172) jattila48 válasza don_peter (#5170) üzenetére


jattila48
aktív tag

Ez talán egyszerűbb és gyorsabb, ha a ciklust kigörgeted:

unsigned char reverse_bits(unsigned char x){
unsigned char y=0;
for(int i=0;i<8;++i){
y=y >> 1;
y=y | (x & 0x80);
x=x << 1;
}

return y;
}

„Kétségtelen, hogy nem tudjuk, mit tegyünk, de felkészültek és elszántak vagyunk.” - Olaf Scholz német kancellár

(#5173) jattila48 válasza don_peter (#5170) üzenetére


jattila48
aktív tag

Vagy a ciklus ilyen is lehet:

for(int i=0;i<8;++i){
y=y << 1;
y=y | (x & 1);
x=x >> 1;
}

„Kétségtelen, hogy nem tudjuk, mit tegyünk, de felkészültek és elszántak vagyunk.” - Olaf Scholz német kancellár

(#5174) don_peter válasza jattila48 (#5173) üzenetére


don_peter
senior tag

Köszönöm végül a táblás módszert választottam.

----== Neo Geo és Arcade Fórum : www.neo-geo.hu ==----

(#5175) tototos válasza don_peter (#5166) üzenetére


tototos
őstag

mivel a tábla az const ezért a flashben fog tárolódni, és nem a ramból vesz el 256byte-t.

(#5176) EQMontoya válasza tototos (#5175) üzenetére


EQMontoya
veterán

:U

Same rules apply!

(#5177) tototos válasza EQMontoya (#5176) üzenetére


tototos
őstag

ha const-al definiálsz akkor a fordító a flashben fogja tárolni és nem a ramban. MAP fájlban meg is lehet nézni pontosan hova rakta.

(#5178) dabadab válasza EQMontoya (#5176) üzenetére


dabadab
titán

Valami beágyazott rendszerről van szó, ami a PC-kkel ellentétben az OS-t meg a programokat meg egyebeket nem bootkor olvassa be a RAM-ba valami háttértárról, hanem egyrészt valószínűleg OS egyáltalán nincs, ami program meg fut, az fixen flash memóriában van, nem RAM-ban (ezekben a cuccokban egyébként tipikusasn több a flash, mint a RAM, tehát ha valamit át lehet rakni RAM-ból flashbe, az áltlában jó dolog), márpedig egy const tömb az a program része.

DRM is theft

(#5179) EQMontoya válasza tototos (#5177) üzenetére


EQMontoya
veterán

Azért ez így ebben a formában elég furán hangzik, gyakori használat mellett (és mondjuk ilyen beégetett tömböt simán csinálsz pont erre) eléggé szuboptimális lesz a dolog.

Same rules apply!

(#5180) don_peter válasza tototos (#5175) üzenetére


don_peter
senior tag

ROM ként tárolom vagy is a PIC program memóriájában.
CONST-ként nem engedélyezett a tárolása.

----== Neo Geo és Arcade Fórum : www.neo-geo.hu ==----

(#5181) DrojDtroll


DrojDtroll
addikt

Code::block-ban hol lehet beállítani, hogy az adott program csak 32mb ramot hasznaljon???

(#5182) EQMontoya válasza DrojDtroll (#5181) üzenetére


EQMontoya
veterán

Ez a kérdés hogyan merült fel? :)

Same rules apply!

(#5183) don_peter


don_peter
senior tag

Srácok ennek a BT chipnek a konfigurációs beállításához kellett a bitfordítós program: DPTP System - nRF8001 Bluetooth kapcsolat
Köszi még egyszer a segítséget.

----== Neo Geo és Arcade Fórum : www.neo-geo.hu ==----

(#5184) DrojDtroll válasza EQMontoya (#5182) üzenetére


DrojDtroll
addikt

Versenyen volt ilyen feltétel, hogy ennyi memóriát használhat csak a program.

(#5185) axioma válasza DrojDtroll (#5184) üzenetére


axioma
veterán

Azt gyanitanam latatlanban, hogy nem arra gondoltak, hogy a futasnal legyen ez ellenorizve es kiabaljon ha nem jo (vagy esetleg ettol fuggoen mas modszerrel csinald tovabb), hanem arra, hogy az algoritmus maga biztositsa (a felepitesevel), hogy ez alatt marad a felhasznalas (vagy nem hasznalsz dinamikusan foglalt valtozokat, vagy ha megis, azoknak a szamara van felso korlat mar maga az algo alapjan). Illetve van me'g amikor az a cel, hogy a tomoritest oldd meg (pl. 4 db iranyt jelzo info (fel/le/jobbra/balra) egy byte-ban, vagy 30 darab 0-120 kozti egesz lista vagy tomb helyett bithellyel abrazolva 16 byte-on). A kicsit konkretabb feladatbol kiderulhetne, hogy melyik (vszinu egyszeruen kodolhato de sok memoriat hasznalo) algoritmus kizarasa miatt tettek bele a feltetelt - es valoszinuleg mert ettol lett szep es otletet igenylo a feladat :) )

[ Szerkesztve ]

(#5186) fraba


fraba
aktív tag

Sziasztok!

MPLAB X IDE v2.30-ben fejlesztek egy programot pic16f688-ra. DS1820-al szeretnék hőmérsékletet mérni. A program C-ben íródik. Találtam egy ilyen, már más által megvalósított kapcsolást és programot [link], de olyan parancsot használ (Ow_Reset, Ow_Read, Ow_Write), amit a fejlesztőkörnyezet nem ismer. Gondolom includeolni kéne egy header file-t, de itt elakadtam... Tudna valaki segíteni? Maga az includeolás az menne, azzal semmi probléma nincs, csak hogy mit honnan kell letölteni, hova kellene bemásolni, meg ilyenek.

Előre is köszönöm!

(#5187) don_peter válasza fraba (#5186) üzenetére


don_peter
senior tag

Ezek olyan függvények amelyek nincsenek benne a fórosban.
Gondolom egy külső fájlban írta meg és azt nem publikálta.
Használd ezt a forrást: [link]
Egyébként a DS1820-nak van adatlapja ott részletesen leírja miképpen kell vele kommunikálni.
Honnan szereztél ilyen szenzort?
Pont most akarok én is egy olyan projektet elkezdeni amihez ilyen szenzor fog kelleni.

[ Szerkesztve ]

----== Neo Geo és Arcade Fórum : www.neo-geo.hu ==----

(#5188) zka67 válasza don_peter (#5187) üzenetére


zka67
őstag

(#5189) don_peter válasza zka67 (#5188) üzenetére


don_peter
senior tag

Köszönöm, vettem is gyorsan 2db-ot. :D

----== Neo Geo és Arcade Fórum : www.neo-geo.hu ==----

(#5190) fraba válasza don_peter (#5187) üzenetére


fraba
aktív tag

Free sample-ként rendeltem még régebben valamelyik gyártótól vagy összesen 5 db-ot. aztán onnan maradt meg. :) De ezt (#5188) zka67 én is megjegyzem.. :P Köszi! :K

A leírását tanulmányoztam, egy egész délután játszottam az időzítésekkel, meg mindennel. Átírtam mindent, ötször megnéztem, de nem akarja az igazságot.
Ez amit belinkeltél meg nekem sajnos nem jó, az MPLAB X egy rakás hibaüzenetet küld, hogy ez nem jó meg az nem jó. De ahogy elnézem, nem véletlen. "(CCS Compiler, Microchip C18 Compiler)".
Tudom, ajándék csónak ne nézd a lapát, de... Valami ötlet? :F

[ Szerkesztve ]

(#5191) don_peter válasza fraba (#5190) üzenetére


don_peter
senior tag

Igazából nem azért linkeltem, hogy úgy ahogy van másold és használd :D
A lényeg benne van csak észre kell vedd..

Ha a gyártó által megadott időzítéseket használod, akkor mennie kell, max az lehet a gond, hogy a késleltető függvényed nem jó mert a PIC nincs jól beállítva, de ez már egy másik topik..

----== Neo Geo és Arcade Fórum : www.neo-geo.hu ==----

(#5192) fraba válasza don_peter (#5191) üzenetére


fraba
aktív tag

már időközben találtam valamit! :) köszi a segítséget!

(#5193) zka67 válasza fraba (#5186) üzenetére


zka67
őstag

Szia, itt az általam használt modul. A gpio.h-t cseréld le a PIC io moduljára, és a gpio funkciókat is írd át a megfelelőkre, értelemszerűen (Ez a program a 2.5-ös portot használja, természetesen ez szabadon választható). A temp_delay értékeket át kell számolnod, hogy a megfelelő időzítéseket megkapd.

Először olvasd ki az értket a chip-ből a temp_get()-tel, utána indítsd el a következő konverziót a temp_start_conv()-val, és a következő kiolvasásig várj 1mp-et. A program az alapértelmezett felbontást használja (12 bit), a konverzió ideje 750ms. Ezalatt csinálhatsz mást, sűrűbben kiolvasni nincs értelme és egyébként is hibás adatot kapnál.

Remélem így már boldogulni fogsz :)

#include "core/gpio/gpio.h"

void temp_delay(int delay) {
do { ; } while(--delay);
}

void DQ_LOW(void) {
gpioSetDir(2, 5, gpioDirection_Output);
gpioSetValue(2, 5, 0);
}

void DQ_HIGH(void) {
gpioSetValue(2, 5, 1);
gpioSetDir(2, 5, gpioDirection_Input);
}

uint32_t DQ(void) {
return gpioGetValue(2, 5);
}

void temp_reset(void) {
char presence = 1;
while (presence) {
DQ_LOW() ;
temp_delay(9055); // 503us
DQ_HIGH();
temp_delay(1260); // 70us
presence = DQ();
temp_delay(7740); // 430us
}
}

void temp_write_byte(uint8_t val) {
uint32_t i;
uint8_t temp;
for (i=8; i>0; i--) {
temp = val & 0x01;
DQ_LOW();
temp_delay(90); // 5us
if (temp) DQ_HIGH();
temp_delay(1134); // 63us
DQ_HIGH();
temp_delay(36); // 2us
val = val >> 1;
}
}

uint8_t temp_read_byte(void) {
uint32_t i;
uint8_t value = 0;
for (i=8; i>0; i--) {
value >>= 1;
DQ_LOW();
temp_delay(108); // 6us
DQ_HIGH();
temp_delay(72); // 4us
if (DQ()) value |= 0x80;
temp_delay(1134); // 63us
}
return(value);
}

void temp_start_conv(void) {
DQ_HIGH();
temp_reset();
temp_write_byte(0XCC); // skip rom
temp_write_byte(0X44); // start conversion
}

uint32_t temp_get(void) {
uint32_t tlv, thv;
temp_reset();
temp_write_byte(0XCC); // skip rom
temp_write_byte(0XBE); // read scratchpad
tlv = temp_read_byte();
thv = temp_read_byte();
DQ_HIGH();
return tlv | (thv << 8);
}

(#5194) fraba válasza zka67 (#5193) üzenetére


fraba
aktív tag

Isten vagy, köszönöm! :K

(#5195) fmx


fmx
tag

Üdv!
Kezdő programozó vagyok és lenne nekem egy példám..
A példa így szól:
Ird meg a C nyelvű függvényt mátrix transzponálására(az oszlopok és a sorok helyet cserélnek).Ird meg a főprogramot,amely bemutatja a függvény működését.
Nos,a mátrix kiírása/beolvasása sikerült viszont a transzponálás már nem megy annyira.Van pár ötletem de azért meghallgatnák pár tapasztaltabb embert,hogy mit javasol.
Köszönöm :R

(#5196) dabadab válasza fmx (#5195) üzenetére


dabadab
titán

Igazából a ravaszság az, hogy nem is kell ténylegesen transzponálni a mátrixot.

Gondolom valami kétdimenziós tömböt alkalmaztál a mátrix tárolására, szóval a tomb [A]x,y elemet valahogy úgy kapod meg, hogy elem=matrix[x][y]. Ha a transzponált mátrix [AT]x,y elemére vagy kiváncsi, akkor egyszerűen ki kell olvasni az eredeti mátrix [A]y,x elemét, vagyis transposed_element=matrix[y][x];
Röviden: olvasáskor egyszerűen cseréld fel az x-et meg az y-t és máris megvan a transzponált mátrix :)

DRM is theft

(#5197) Jester01 válasza dabadab (#5196) üzenetére


Jester01
veterán

Attól függ mi a feladat pontosan. Mert ha a transzponált mátrixot oda kell adni valami másik függvénynek az boldogtalan lesz ha nem transzponálod ténylegesen mert nem tudja, hogy fel kell cserélni a koordinátákat. Persze ha van valami társított flag ami mutatja és ezt minden tudja is kezelni, akkor jó megoldás.

A kérdésre válaszolva: végig kell iterálni az alsó vagy a felső hárömszögön és cserélgetni. Már ha nem kell új helyre másolni, mert akkor az egészen végig kell menni és felcserélve kiírni.

[ Szerkesztve ]

Jester

(#5198) EQMontoya válasza Jester01 (#5197) üzenetére


EQMontoya
veterán

Troll megoldas: a transzpnalo fuggvenyed csak egy func pointert ad vissza, amin keresztul az eredeti mx indexelheto. C++-ban megszebb ugyanezt visszaadott iteratorrral megoldani. ;]

Same rules apply!

(#5199) emvy válasza EQMontoya (#5198) üzenetére


emvy
nagyúr

Konkretan elkezdtem ezt irni, de aztan ugy gondoltam, hogy nem trollkodok ennyire bele a forumba :DDD Ezzel annyi lehet a gond C-ben, hogy ha az eredeti matrixot megvaltoztatjak, miutan visszaadtad a fvptr-t, akkor esetleg problema lehet. Rendes funkcionalis stilusban ez az alapmegoldas egyebkent, es ott meg azzal sincs gond, hogy valaki kirantja alolad a szonyeget (ill. az eredeti erteket).

while (!sleep) sheep++;

(#5200) Jester01


Jester01
veterán

Viszont ez minden elem elérésnél egy indirekt függvényhívás amit nem tud a fordító inline beágyazni. Bizonyos mennyiség fölött garantáltan sokkal lassabb lesz, mintha ténylegesen transzponáltad volna.

A másik, hogy a cache hatékonyságát nagyban befolyásolja a bejárás. Egy sorfolytonos bejárás sokkal gyorsabb lehet mint egy oszlopok szerinti. Az algoritmust ennek megfelelően választhattad meg, de ha a hívó egy függvénypointeresen transzponált mátrixot ad be, akkor amire a kód azt hiszi, hogy hatékony sorfolytonos az valójában nem az. Ugye bizonyos műveleteknél ezért éri meg ténylegesen transzponálni a mátrixot, a bejárás megváltoztatása helyett, még akkor is ha amúgy nincs függvénypointeres trükközés. Lásd még What every programmer should know about memory: "Through the simple transformation of the matrix we can achieve a 76.6% speed-up! The copy operation is more than made up. The 1000 non-sequential accesses really hurt. "

Virtuális mátrixokhoz viszont kétségkívül jó megoldás lehet.

Jester

Copyright © 2000-2024 PROHARDVER Informatikai Kft.