24. juli 2003 - 23:33Der er
26 kommentarer og 1 løsning
Vil gemme store Arrays af long long's
Okay... her er en af de svære.... hvordan gemme man hurtist 10.000 long long's (tæt på int_64) i en fil? (Bruger visual .net 2003) Og så det naturlige følge spørgsmål: hvordan load'er man dem så ind igen? -bruger ">>", "<<" og en løkke lige nu.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Det hurtigste er sansynligvis at bruge fwrite til at gemme og fread til at læse. Hvis du har dem i et array kan du gemme og læse dem alle i et kald til fread/fwrite. Hvad mener du med "(tæt på int_64)"?
Efter som det ikke er mere end en måned siden jeg fik .net 2003 læste jeg jo lidt i manualerne.... Der står meget tydeligt at long long's og Int_64 ikke altid bliver behandlet ens :-)
Hvordan ser filen så enlig ud? - er det ligesom med "<<", med mellemrum mellem hver variabel, eller bliver det binært? - Kan du ikk oz lige skrive 1 hurtigt kode eksempel?
Evt. kan du tilføje setvbuf(f, NULL, _IOFBF, useVBuf); efter fopen, useVBuf skal have en passende høj værdi, mindst allokerings enhed på harddisken, fx. 32768.
segmose >> til hvad nytte? skulle det gøre det hurtigere at gemme det? Skal gemme rigtig mange gange... det er et system hvor data'erne først bliver regnet ud i 10.000 array klumper og der efter så skal samles i én file.
Hvordan er baseprimes, BASE og fbaseprimes erklæret? Jeg kan ikke se at fread kun får 3 argumenter, medmindre du har en underlig erklæring af en af ovennævnte.
bertelbrander >> ved du noget om hvorfor der er en grænse på et sted mellem 100001 og 200K for hvor mange variabler man kan skrive til HD'en i ét array?
På min PC med 128MByte RAM kører det fint når det er er kompileret med VC++ 6.0 (og cygwin-gcc og BorlandC). Som du ser skriver og læser det 32Mbyte på en gang. VC++ nægter at kompilere hvis jeg sætter SIZE til 128MByte.
Jeg lavede en ny version der læser/skriver 4*1024*1024 __int64'er, det kører uden problemer, så jeg tror du har en fejl et andet sted. (__int64 er et andet navn for long long.)
printf("Success, Hit Enter to exit %d %d\n", SIZE, sizeof(__int64));
getchar();
return 0; }
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.