Toon posts:

[c++] foto in variable

Pagina: 1
Acties:

Verwijderd

Topicstarter
Wij zijn voor school bezig met een project, en nu moet er een foto (jpg, bmp) opgeslagen worden in een variable.

Heeft iemand van jullie enig idee welk type variable ik hiervoor kan gebruiken. Ik heb al gezocht in de search en in de MSDN libary maar kan niks geschikts vinden.

  • Frostie
  • Registratie: September 2000
  • Laatst online: 22-07 16:02
Op vrijdag 22 maart 2002 09:51 schreef mvdorst het volgende:
Wij zijn voor school bezig met een project, en nu moet er een foto (jpg, bmp) opgeslagen worden in een variable.

Heeft iemand van jullie enig idee welk type variable ik hiervoor kan gebruiken. Ik heb al gezocht in de search en in de MSDN libary maar kan niks geschikts vinden.
:? Waarom zou je dat willen? Waarom sla je niet gewoon de bestandslocatie op in een variabele? Lijkt me logischer dan alle plaatjes het programma insleuren.

Weaseling out of things is important to learn. It's what separates us from the animals... except the weasel. Homer Simpson


Verwijderd

Topicstarter
Plaatje moet overgeladen worden van een netwerkcamera in een database. zou eerst via een bestand kunnen, maar is natuulijk mooier als het via een variable kan.

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 02:22
Op vrijdag 22 maart 2002 09:51 schreef mvdorst het volgende:
Wij zijn voor school bezig met een project, en nu moet er een foto (jpg, bmp) opgeslagen worden in een variable.

Heeft iemand van jullie enig idee welk type variable ik hiervoor kan gebruiken. Ik heb al gezocht in de search en in de MSDN libary maar kan niks geschikts vinden.
code:
1
2
3
4
5
6
7
8
std::vector<std::vector<Pixel> >,
waarbij Pixel = 
struct Pixel{
  CDepth Red;
  CDepth Green;
  CDepth Blue;
}
en CDepth = char (voor 24 bits kleur) of short(48 bits).

Werkt, maar is niet noodzakelijkerwijs het beste als je met fixed-format images werkt. Dan kan zelfs
Pixel[640][480] soms geboeg zijn.
(JPG is lastig...)

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


Verwijderd

Idd gewoon een struct aanmaken met alle eigenschappen van het formaat en natuurlijk de data zelf

  • GAEvakYD
  • Registratie: Juni 2001
  • Laatst online: 21:46
Wordt denk ik een lekker gevuld structje n a een tijdje

:9

Verwijderd

BYTE*

  • XTerm
  • Registratie: Juli 2001
  • Laatst online: 10-06-2025
Op zaterdag 23 maart 2002 11:20 schreef hondass50 het volgende:
BYTE*
Lijkt me idd ook het beste, hij wil enkel het plaatje overzetten, dus waarom het fileformat uit mekaar sleuren ?

Ik ben niet bekent met al die vettige windows type's maar een char* lijkt me de beste oplossing...

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 04-09 14:38

curry684

left part of the evil twins

Voor dit soort dingen hebben ze in C++ het keyword class uitgevonden.

Professionele website nodig?


  • XTerm
  • Registratie: Juli 2001
  • Laatst online: 10-06-2025
Op zaterdag 23 maart 2002 12:45 schreef curry684 het volgende:
Voor dit soort dingen hebben ze in C++ het keyword class uitgevonden.
Waarom wil je een klasse gaan gebruiker als een simpele character array volstaat ?

  • Ericston
  • Registratie: Maart 2001
  • Laatst online: 05-09 18:58
Op zondag 24 maart 2002 06:25 schreef XTerm89D het volgende:

[..]

Waarom wil je een klasse gaan gebruiker als een simpele character array volstaat ?
Omdat het niet om C gaat.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 09-09 22:48

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op zondag 24 maart 2002 06:25 schreef XTerm89D het volgende:

[..]

Waarom wil je een klasse gaan gebruiker als een simpele character array volstaat ?
meestal wil je behalve de data ook nog de eigenschappen bijhouden, zoals breedte, hoogte en bits per pixel

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 04-09 14:38

curry684

left part of the evil twins

Op zondag 24 maart 2002 19:41 schreef OiSyN het volgende:
meestal wil je behalve de data ook nog de eigenschappen bijhouden, zoals breedte, hoogte en bits per pixel
Handig dat OiSyN altijd in de buurt is om minder slimme vragen te beantwoorden als je zelf een tijdje weg bent :)

Overigens wat betreft de originele vraag is dit helemaal niet nodig: die jongen wil niet zozeer een plaatje opslaan als wel een binary blob.

Dus hij moet gewoon een Binary container class schrijven die zichzelf van/naar file kan fietsen en uit willekeurige geheugendata en een const-pointer naar z'n data retourneren en hij is klaar. Het boeit 'm geen hol of het een bmp of een jpg is.

Aanzetje:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class MyBinary
{
public:
MyBinary();
MyBinary(const unsigned char* p_Data, unsigned long p_Size);
MyBinary(const MyBinary &p_Binary);

void Assign(const unsigned char* p_Data, unsigned long p_Size);
void LoadFromFile(const MyString &p_FileName);
void SaveToFile(const MyString &p_FileName);

inline const unsigned char* Data() const { return m_Data; }
inline unsigned long Size() const { return m_Size; }

private:
  unsigned char* m_Data;
  unsigned long  m_Size;
};

Rest mag je zelf invullen ;)

Professionele website nodig?


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 09-09 22:48

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op zondag 24 maart 2002 23:08 schreef curry684 het volgende:

[..]

Handig dat OiSyN altijd in de buurt is om minder slimme vragen te beantwoorden als je zelf een tijdje weg bent :)
check m'n ondertitel :P ("Minder slimme vragen beantwoorder" paste niet :{)

maar goed, jij gaat er dus vanuit dat ie de letterlijke bestandsdata op wil slaan... ik ging ervan uit dat ie het plaatje op wilde slaan, dus gegevens en pixeldata (uncompressed) :)

mvdorst: overigens, als je gewoon filedata mee wilt linken in je executable, dan kun je denk ik beter gebruik maken van resources (ik ga ervan uit dat je een windows-based proggie maakt aangezien je het over de MSDN hebt)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Op zondag 24 maart 2002 23:08 schreef curry684 het volgende:
Dus hij moet gewoon een Binary container class schrijven die zichzelf van/naar file kan fietsen en uit willekeurige geheugendata en een const-pointer naar z'n data retourneren en hij is klaar. Het boeit 'm geen hol of het een bmp of een jpg is.
Die eerste zin snap ik niet helemaal, maar waarom niet gewoon std::string ?

  • The End
  • Registratie: Maart 2000
  • Nu online

The End

!Beginning

Je kan IPicture gebruiken... Die kan BMP's en jpg's bevatten (geloof ook nog andere bestandsformaten)

  • Korben
  • Registratie: Januari 2001
  • Laatst online: 14-11-2025

Korben

() => {};

Op maandag 25 maart 2002 08:55 schreef The End het volgende:
Je kan IPicture gebruiken... Die kan BMP's en jpg's bevatten (geloof ook nog andere bestandsformaten)
Mèèèèèèèp (zoemer :P)

Fout. IPicture kan ten eerste zelf helemaal nix laden. Daarvoor moet je OleLoadPicture gebruiken, en die pikt alleen BMP, ICO en WMF. Het is wel zo dat een IPicture een JPG kan bevatten (het is gewoon de representatie van een geheugenbitmap), maar dan moet je wel eerst een functie hebben die een JPG kan lezen. Dus. :)

Zie ook: :)
MSDN: OleLoadPicture
MSDN: IPicture

.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 04-09 14:38

curry684

left part of the evil twins

Op maandag 25 maart 2002 08:55 schreef The End het volgende:
Je kan IPicture gebruiken... Die kan BMP's en jpg's bevatten (geloof ook nog andere bestandsformaten)
IPicture is alleen maar een interface en kan dus per definitie niets bevatten. Je moet dan een class hebben die IPicture correct implementeert (dwz. niet met E_NOTIMPL overal :) )

* curry684 moet op dit soort dingen altijd even mierenneuken.

Professionele website nodig?


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 04-09 14:38

curry684

left part of the evil twins

Op maandag 25 maart 2002 03:01 schreef Sneechy het volgende:
Die eerste zin snap ik niet helemaal, maar waarom niet gewoon std::string ?
Kan ook maar ik ben a) allergisch voor standard-libs en b) een string misbruiken voor een binary blob vind ik persoonlijk lichtelijk ranzig als je in een half uurtje zelf ook een specialized binary-container-class kunt schrijven.

Professionele website nodig?


Verwijderd

Op maandag 25 maart 2002 15:00 schreef curry684 het volgende:
ik ben a) allergisch voor standard-libs
Hier hebben we het al eerder over gehad, ik ga er maar niet verder op in.. :Z
(Maak maar van je ondertitel: wheel-re-inventer >:))
en b) een string misbruiken voor een binary blob vind ik persoonlijk lichtelijk ranzig als je in een half uurtje zelf ook een specialized binary-container-class kunt schrijven.
Misbruiken ? Is verder prima, maar dan merk ik wel even op dat een zelf-in-een-half-uurtje-gebakken binary-container-classje stukken minder flexibel, robuust, en gedocumenteerd is.

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 04-09 14:38

curry684

left part of the evil twins

Op maandag 25 maart 2002 15:07 schreef Sneechy het volgende:
Misbruiken ? Is verder prima, maar dan merk ik wel even op dat een zelf-in-een-half-uurtje-gebakken binary-container-classje stukken minder flexibel, robuust, en gedocumenteerd is.
Bij jou misschien, bij mij niet :Y)

Professionele website nodig?


  • Korben
  • Registratie: Januari 2001
  • Laatst online: 14-11-2025

Korben

() => {};

Op maandag 25 maart 2002 14:58 schreef curry684 het volgende:

[..]

IPicture is alleen maar een interface en kan dus per definitie niets bevatten. Je moet dan een class hebben die IPicture correct implementeert (dwz. niet met E_NOTIMPL overal :) )

* curry684 moet op dit soort dingen altijd even mierenneuken.
Okee, zal ik het ff goed 'articuleren' dan?

IPicture is een interface die een Windows-bitmap kan manipuleren en de gegevens erover bijhoudt (voor zover mogelijk).

Beter?

* Korben is zelf ook een mierenneuker, vindt het dus niet echt erg. :)

.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?


  • Korben
  • Registratie: Januari 2001
  • Laatst online: 14-11-2025

Korben

() => {};

Op maandag 25 maart 2002 15:07 schreef Sneechy het volgende:

[..]

Misbruiken ? Is verder prima, maar dan merk ik wel even op dat een zelf-in-een-half-uurtje-gebakken binary-container-classje stukken minder flexibel, robuust, en gedocumenteerd is.
Op maandag 25 maart 2002 15:10 schreef curry684 het volgende:

[..]

Bij jou misschien, bij mij niet :Y)
Ja, en wat dan nog? Je hoeft je container-class niet wereldwijd uit te brengen, hoor. :) En de robuustheid van je class hangt af van je eigen skillz, waarin jij schijnbaar niet echt veel vertrouwen hebt. ;)

.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?


  • The End
  • Registratie: Maart 2000
  • Nu online

The End

!Beginning

Op maandag 25 maart 2002 14:50 schreef Xenophage het volgende:

[..]

Mèèèèèèèp (zoemer :P)

Fout. IPicture kan ten eerste zelf helemaal nix laden. Daarvoor moet je OleLoadPicture gebruiken, en die pikt alleen BMP, ICO en WMF. Het is wel zo dat een IPicture een JPG kan bevatten (het is gewoon de representatie van een geheugenbitmap), maar dan moet je wel eerst een functie hebben die een JPG kan lezen. Dus. :)

Zie ook: :)
MSDN: OleLoadPicture
MSDN: IPicture
je hebt gelijk dat dit in de MSDN staat... Maar OleLoadPicture pikt wel degelijk jpg's. Daarna kan je allerlei bewerkingen uitvoeren en het plaatje opslaan op disk (b.v.) als jpg,bmp enz. enz.

O ja, niet fout dus... De vraag was welke variable hij ervoor kon gebruiken, niet met welke functie hij het kan laden in de variable....... :)

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 04-09 14:38

curry684

left part of the evil twins

Op maandag 25 maart 2002 15:11 schreef Xenophage het volgende:
IPicture is een interface die een Windows-bitmap kan manipuleren en de gegevens erover bijhoudt (voor zover mogelijk).

Beter?
Mmmmmm nog niet helemaal:

IPicture is een interface die door een willekeurige class geexporteerd kan worden en die functies biedt ten behoeve van het onderhoud en beheer van een Windows-bitmap.

(in jouw versie zou je IPicture niet op een database- of remote-web-thin-client wrapper class of zo mogen plakken, je impliceerde dat de exporterende interface zelf fysieke toegang tot de data moet hebben)

Professionele website nodig?


Verwijderd

Op maandag 25 maart 2002 15:14 schreef Xenophage het volgende:
En de robuustheid van je class hangt af van je eigen skillz, waarin jij schijnbaar niet echt veel vertrouwen hebt.
Ik vind het gewoon onzin (en erg naïef) als Curry zegt dat 'ie in een half uur een betere blobbert dan std::string kan produceren.

Hetzelfde geldt uiteraard voor jouw als je denkt dat Curry's classje dan echt robuuster wordt 8-).

  • Korben
  • Registratie: Januari 2001
  • Laatst online: 14-11-2025

Korben

() => {};

Op maandag 25 maart 2002 15:15 schreef The End het volgende:

[..]

je hebt gelijk dat dit in de MSDN staat... Maar OleLoadPicture pikt wel degelijk jpg's. Daarna kan je allerlei bewerkingen uitvoeren en het plaatje opslaan op disk (b.v.) als jpg,bmp enz. enz.

O ja, niet fout dus... De vraag was welke variable hij ervoor kon gebruiken, niet met welke functie hij het kan laden in de variable....... :)
Damn. Je hebt gelijk. Sorry, mijn fout. Maar met fout bedoelde ik dat wat jij zei fout was. Wat toch niet zo was, maar goed. :)

.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?


Verwijderd

Op maandag 25 maart 2002 15:14 schreef Xenophage het volgende:
Ja, en wat dan nog? Je hoeft je container-class niet wereldwijd uit te brengen, hoor. :)
Een slecht excuus om slecht te proggen :+.

  • Korben
  • Registratie: Januari 2001
  • Laatst online: 14-11-2025

Korben

() => {};

Op maandag 25 maart 2002 15:27 schreef Sneechy het volgende:

[..]

Ik vind het gewoon onzin (en erg naïef) als Curry zegt dat 'ie in een half uur een betere blobbert dan std::string kan produceren.

Hetzelfde geldt uiteraard voor jouw als je denkt dat Curry's classje dan echt robuuster wordt 8-).
Nou, Curry kennende... :) Maarreh... zo moeilijk is het niet om een blobber te schrijven, dat heb je egwel in een half uur gefixt. En waarschijnlijk doet ie het ook. Zolang je er maar geen stress test op los laat :P

.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?


  • Korben
  • Registratie: Januari 2001
  • Laatst online: 14-11-2025

Korben

() => {};

Op maandag 25 maart 2002 15:30 schreef Sneechy het volgende:

[..]

Een slecht excuus om slecht te proggen :+.
code:
1
motto = ~(HEY_IT_COMPILES_SHIP_IT);

.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 09-09 22:48

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op maandag 25 maart 2002 15:27 schreef Sneechy het volgende:

[..]

Ik vind het gewoon onzin (en erg naïef) als Curry zegt dat 'ie in een half uur een betere blobbert dan std::string kan produceren.
hoezo naief? het is beter in de zin van het doet precies wat je wilt en het is makkelijk aanpasbaar voor als je ooit extra functionaliteit erin wilt hebben

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 09-09 22:48

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op maandag 25 maart 2002 15:33 schreef Xenophage het volgende:

[..]
code:
1
motto = ~(HEY_IT_COMPILES_SHIP_IT);
:)
you know your project is in trouble when you see the words "Hello world" pop up at the lead programmer's terminal :P

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Op maandag 25 maart 2002 17:43 schreef OiSyN het volgende:

[..]

hoezo naief? het is beter in de zin van het doet precies wat je wilt
In dit geval biedt std::string precies wat de topicstarter nodig heeft.
en het is makkelijk aanpasbaar voor als je ooit extra functionaliteit erin wilt hebben
Hier komt die flexibiliteit weer om de hoek. Als je std::string gebruikt is de kans stukken kleiner dat je zelf nog extra baksels moet gaan maken om weer net ff wat anders te bereiken. Mocht je ondanks std::string's flexibiliteit en interoperabiliteit met de rest van de standard library toch nog andere functionaliteit nodig hebben: deriven en wat extra's toevoegen.

Ik krijg echt het gevoel dat mensen hier meer Stroustrop moeten lezen ;).

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 04-09 14:38

curry684

left part of the evil twins

Op maandag 25 maart 2002 18:03 schreef Sneechy het volgende:
Ik krijg echt het gevoel dat mensen hier meer Stroustrop moeten lezen ;).
Ik neem Stroustrup serieus wat de taal betreft, niet wat betreft de standard libs die imho code rommelig en onleesbaar maken. Uniformiteit en interoperabiliteit zijn voor mij 2 hele sluitende redenen om eigen implementaties te maken van standaard spul.

Ieder z'n eigen mening overigens, zoals je zelf al zei verschilt de onze op dit punt nogal fundamenteel.

Professionele website nodig?


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 09-09 22:48

.oisyn

Moderator Devschuur®

Demotivational Speaker

curry684: niet wat betreft de standard libs die imho code rommelig en onleesbaar maken.
juist, dat vind ik dus ook, het past echt totaal niet in mijn code-stijl, en daarnaast vind ik het nog lelijk ook

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Op maandag 25 maart 2002 18:46 schreef OiSyN het volgende:

[..]

juist, dat vind ik dus ook, het past echt totaal niet in mijn code-stijl, en daarnaast vind ik het nog lelijk ook
Fascinerend :). Ik vind het erg interessant om te weten hoe het komt dat twee verder hele brave codertjes zo'n afkeer hebben gekregen tegen deze library.. Ik zelf kan me hier namelijk zo moeilijk in inleven, omdat ik de C++ standard library eigenlijk altijd erg mooi en elegant heb gevonden O+.

Kun je (of jullie) misschien wat voorbeelden geven ofzo om te laten zien wat je dan precies lelijk of rommelig vindt ?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 09-09 22:48

.oisyn

Moderator Devschuur®

Demotivational Speaker

Allereerst zijn alle klassen met een kleine letter. 'T is maar wat je gewend bent, maar ik vind dat heel verwarrend.

En dan nog de eindeloze lijsten aan typedefs, voor elke mogelijke combinatie wordt wel een nieuw type gedefinieerd

En natuurlijk de methodenamen die gewoon op attribuutnamen lijken. Als ik een klasse maak en ik moet in de klasse een lengte bijhouden die je van buitenaf op kunt vragen met een functie, dan noem ik die var length en de functie getLength (), maar bij de STL klassen is het altijd nogal onduidelijk wat de namen zijn (iets als buflen ofzoiets), en de functie heeft de naam die ik de variabele zou geven (length ()) dus.

En als we het dan toch over de functienamen hebben, het lijkt wel een sport om die zo cryptisch mogelijk te kiezen. Een stukje uit streambuf:
code:
1
2
3
4
5
6
7
8
9
10
11
12
protected:
    E *eback() const;
    E *gptr() const;
    E *egptr() const;
    void gbump(int n);
    void setg(E *gbeg, E *gnext, E *gend);
    E *pbase() const;
    E *pptr() const;
    E *epptr() const;
    void pbump(int n);
    void setp(E *pbeg, E *pend);
    virtual void imbue(const locale &loc);

jaaja... eback, gptr, egptr, imbue :? Heel intuitief allemaal (NOT)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Naamgevingsvoorkeuren zijn inderdaad heel persoonlijk, dus ik kan me voorstellen dat je je daar niet helemaal in kan vinden. Maar ben je het niet met me eens dat je als je een productieve programmeur wil zijn (eentje die allerlei libs van anderen kan gebruiken), je door dat soort dingen heen moet kunnen kijken om te zien waar het eigenlijk om gaat?

  • Orphix
  • Registratie: Februari 2000
  • Niet online
[b]Op maandag 25 maart 2002 20:49 schreef OiSyN een stukje over de STL
Ik ben het met je eens dat de naamgeving van de STL een beetje onduidelijk kan zijn. c_str() bijvoorbeeld, dit lijkt een soort helper functie terwijl die wel degelijk erg belangrijk is.
Toch zijn ze wel consequent, dus na wat gewennen valt er perfect mee te werken.
De voorbeelden die jij gaf zijn natuurlijk een beetje dubieus, aangezien deze functies protected zijn. Ze zijn dus niet de bedoeling om direct aangesproken te worden door de client programmeur.

Het belangrijkste wat je moet leren van de STL zijn de kenmerken van de verschillende containers, hoe je een item moet toevoegen/weghalen en hoe je iterators gebruikt.

Als je deze basisdingen kent (kan in 1 a4'tje) dan ben je al heel productief bezig.

En ja, ik gebruik liever een API die een std::vector<char> teruggeeft dan een zelfgemaakt container.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 09-09 22:48

.oisyn

Moderator Devschuur®

Demotivational Speaker

.edit: reactie op Sneechy dus, maar Orphix moest er persee weer een post tussen wringen ;)

zeker, maar ik vind het de taak van degene die de library maakt, en zeker zoiets standaards als de STL, dat je voor duidelijke naamgeving en code moet zorgen.

Als je een 'gewone' lib van derden gebruikt dan is het idd van: "tja we moeten het er maar mee doen", zeker omdat er dan vaak geen andere alternatieven zijn. Maar de STL had wel wat duidelijker ontworpen mogen zijn. Plus dat er voor de STL wel alternatieven zijn (al dan niet door jezelf gemaakt of gebruik makend van de oude C lib)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 09-09 22:48

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op maandag 25 maart 2002 21:21 schreef Orphix het volgende:

[..]

Ze zijn dus niet de bedoeling om direct aangesproken te worden door de client programmeur.
we hadden het er zojuist nog over dat je std::string kon subclassen als je extra functionaliteit wilde
[..]

En ja, ik gebruik liever een API die een std::vector<char> teruggeeft dan een zelfgemaakt container.
hmmz, ik stop een 2d array van pixels liever niet in een std::vector <std::vector<int> >, al is het alleen maar om performanceoverwegingen.

Maar ik denk dat jullie mij een beetje verkeerd begrijpen. Het doel van de STL vind ik zeker goed, het had van mij alleen wat intuitiever en duidelijker gemogen, en als ik in dezelfde tijd een alternatief kan gebruiken dan doe ik dat meestal (zie de printf vs. cout discussies :))

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Orphix
  • Registratie: Februari 2000
  • Niet online
Op maandag 25 maart 2002 21:30 schreef OiSyN het volgende:
we hadden het er zojuist nog over dat je std::string kon subclassen als je extra functionaliteit wilde
Dat is expres gedaan om het inheriten van de containers te ontmoedigen. De reden daarvoor is dat STL containers, vanwege performance, geen virtual destructor bevat.
hmmz, ik stop een 2d array van pixels liever niet in een std::vector <std::vector<int> >, al is het alleen maar om performanceoverwegingen.
Nee ik ook niet, maar dat was ook niet de bedoeling in dit topic. Een 1-dimensionale container is genoeg.
Het voorbeeld dat Curry geeft zal ongetwijfeld werken, mits goed geimplementeert, maar het brengt niks extra. Enkel een klein beetje performance tegenover de nadelen van non-standaard, kans op bugs, etc.

Verwijderd

Op maandag 25 maart 2002 21:22 schreef OiSyN het volgende:
de STL had wel wat duidelijker ontworpen mogen zijn
Bedoel je hier weer alleen de naamgeving mee, of zijn er in jouw mening ook echt allerlei ontwerpfouten gemaakt waar je je erg aan stoort ? (Vooral dat vind ik interessant.)

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 09-09 22:48

.oisyn

Moderator Devschuur®

Demotivational Speaker

Sneechy: Bedoel je hier weer alleen de naamgeving mee
yup, mijn ervaring met de STL is niet dermate goed dat ik het kan hebben over ontwerpfouten

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 04-09 14:38

curry684

left part of the evil twins

Op maandag 25 maart 2002 22:32 schreef Sneechy het volgende:
Bedoel je hier weer alleen de naamgeving mee, of zijn er in jouw mening ook echt allerlei ontwerpfouten gemaakt waar je je erg aan stoort ? (Vooral dat vind ik interessant.)
Ikzelf heb het nooit intensief genoeg gebruikt om ontwerpfouten te kunnen ontdekken. Ik walg daarentegen van dingen als deze quote uit std::string:
code:
1
2
3
4
5
6
7
8
    size_type find_first_of(const basic_string& right,
      size_type off = 0) const;
    size_type find_first_of(const value_type *ptr,
      size_type off, size_type count) const;
    size_type find_first_of(const value_type *ptr,
      size_type off = 0) const;
    size_type find_first_of(value_type ch,
      size_type off = 0) const;


• Underscores in functienamen zuigen en verwarren in mijn naming conventions enorm met variabelenamen (zie mijn voorbeeld stuk hierboven)
ptr, ch en right zijn echt parameternamen die behulpzaam zijn bij development (NOT).
• Ik heb echt geen idee wat de off parameter daar doet. Ik gok op offset maar die 3 karakters gaan je leven toch niet redden?

Sowieso, als je dan al 20 overloads per functie levert, maak dan ook een extra stapel overloads voor die offset-functies, scheelt een stuk optimalisatie dat de compiler heel hoogstwaarschijnlijk niet voor mekaar krijgt...

Verder op Orphix:
Toch zijn ze wel consequent, dus na wat gewennen valt er perfect mee te werken.
De voorbeelden die jij gaf zijn natuurlijk een beetje dubieus, aangezien deze functies protected zijn. Ze zijn dus niet de bedoeling om direct aangesproken te worden door de client programmeur.
BULLSHIT. Die functies zijn protected zodat ze aangesproken kunnen worden door de inheritende programmeur, en dan zijn onduidelijke namen als dat ONVERGEEFLIJK. Wat een moeite was het geweest om daar duidelijke functie- en parameternamen te gebruiken?!?

Ik vind persoonlijk dat zelfs je private functies 100% begrijpbaar moeten zijn, omdat zelfs dat voor de afleider behulpzaam is bij het begrijpen van de originele implementatie.

Professionele website nodig?


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 04-09 14:38

curry684

left part of the evil twins

Op maandag 25 maart 2002 21:46 schreef Orphix het volgende:
Het voorbeeld dat Curry geeft zal ongetwijfeld werken, mits goed geimplementeert, maar het brengt niks extra. Enkel een klein beetje performance tegenover de nadelen van non-standaard, kans op bugs, etc.
Wat is het nadeel van non-standaard als je de rest van de zogenaamde standaard ook niet gebruikt? In ruil daarvoor krijg je wel perfecte interoperabiliteit met de rest van je custom classes (implicit cast operators om maar een duidelijke te noemen). Kans op bugs is natuurlijk totaal nul in dit soort classes: als je een ernstige fout weet te schrijven in je string of je binary container komt die er echt wel bij je eerste proggel uit of je zult echt een andere baan moeten zoeken.

Professionele website nodig?


  • Orphix
  • Registratie: Februari 2000
  • Niet online
Op dinsdag 26 maart 2002 02:14 schreef curry684 het volgende:
BULLSHIT. Die functies zijn protected zodat ze aangesproken kunnen worden door de inheritende programmeur, en dan zijn onduidelijke namen als dat ONVERGEEFLIJK. Wat een moeite was het geweest om daar duidelijke functie- en parameternamen te gebruiken?!?

Ik vind persoonlijk dat zelfs je private functies 100% begrijpbaar moeten zijn, omdat zelfs dat voor de afleider behulpzaam is bij het begrijpen van de originele implementatie.
Ik had al eerder aangegeven dat de benamingen van de STL ook niet helemaal mijn smaak zijn, maar ze zijn overkombaar.
Toch vind ik die parameters niet zo onduidelijk. Door de typedefs kan je met een beetje logisch verstand opmaken dat value_type wel over een char zal gaan en size_type wel iets van een integer zal zijn. Parameternamen als 'ptr' vind ik niet storend, ik lees hier al direct 'pointer' bij. 'Off' is wel een beetje onduidelijk idd.

Verder heb ik al aangegeven waarom die protected methods waarschijnlijk zo wazig zijn, dit om de programmeur te ontmoedigen een classe ervan af te leiden. Maar eerder compositie te gaan gebruiken.
Ik kan me zelfs voorstellen dat (totaal niet onderbouwd dus :)) dat sommige compilers de STL expres vrij obscuur en onduidelijk maken omdat er toch in zekere zin een soort intellectual property op ligt. Aangezien je template-classes als source moet aanleveren is het moeilijk dit te bewaren. Op deze manier zou je het 'rippen' van de code kunnen beperken.
Op dinsdag 26 maart 2002 02:18 schreef curry684 het volgende:
Wat is het nadeel van non-standaard als je de rest van de zogenaamde standaard ook niet gebruikt? In ruil daarvoor krijg je wel perfecte interoperabiliteit met de rest van je custom classes (implicit cast operators om maar een duidelijke te noemen). Kans op bugs is natuurlijk totaal nul in dit soort classes: als je een ernstige fout weet te schrijven in je string of je binary container komt die er echt wel bij je eerste proggel uit of je zult echt een andere baan moeten zoeken.
Wie zegt dat rest van de standaard niet wordt gebruikt?
En die implicit casts is erg handig voor je eigen werk, maar hoe wil een gebruiker van jouw library nou gemakkelijk een Curry684 binary container in een vector proppen?

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 04-09 14:38

curry684

left part of the evil twins

Op dinsdag 26 maart 2002 02:33 schreef Orphix het volgende:
Toch vind ik die parameters niet zo onduidelijk. Door de typedefs kan je met een beetje logisch verstand opmaken dat value_type wel over een char zal gaan en size_type wel iets van een integer zal zijn. Parameternamen als 'ptr' vind ik niet storend, ik lees hier al direct 'pointer' bij. 'Off' is wel een beetje onduidelijk idd.
You've just proven my point :P

Ch gaat namelijk helemaal niet over een char, da's alleen toevallig als je een string hebt... het is een template remember ;)

En ik lees bij ptr ook pointer ja. Maar waar wijst die pointer naar? Appels? Koeien?

Mijn keuze voor deze 2 zou 'Element' en 'Elements' geweest zijn: een volledig Engels woord dat de lading compleet dekt.
Verder heb ik al aangegeven waarom die protected methods waarschijnlijk zo wazig zijn, dit om de programmeur te ontmoedigen een classe ervan af te leiden. Maar eerder compositie te gaan gebruiken.
WAAAAAROM zijn ze dan niet private?!?!?

Ik moet terugnemen dat ik een stuk hierboven zei dat ik geen ontwerpfouten in de STL kende... als wat je hier zegt waar is is het een enorme...
Wie zegt dat rest van de standaard niet wordt gebruikt?
Nou, ik zei letterlijk: "Wat is het nadeel van non-standaard als je de rest van de zogenaamde standaard ook niet gebruikt?"

En ik garandeer je dat ik de rest van de 'standaard' niet gebruik :Y)
En die implicit casts is erg handig voor je eigen werk, maar hoe wil een gebruiker van jouw library nou gemakkelijk een Curry684 binary container in een vector proppen?
Gezien het feit dat vector voor zover ik weet een template is waar je iedere pointer in kunt frotten zie ik je probleem niet.

Professionele website nodig?


  • Orphix
  • Registratie: Februari 2000
  • Niet online
Op dinsdag 26 maart 2002 02:52 schreef curry684 het volgende:
You've just proven my point :P

Ch gaat namelijk helemaal niet over een char, da's alleen toevallig als je een string hebt... het is een template remember ;)
Ik ging onbewust ook uit van een string, omdat de members die je noemde vaak daarmee gebruikt worden. Als ik een vector<int> zie begrijp ik wel dat de value_type een int is.
En ik lees bij ptr ook pointer ja. Maar waar wijst die pointer naar? Appels? Koeien?

Mijn keuze voor deze 2 zou 'Element' en 'Elements' geweest zijn: een volledig Engels woord dat de lading compleet dekt.
Nou het verwijst niet direct naar een element. Het verwijst naar de locatie van een element. In C++ noemen we dat een pointer. Ik denk dat bij andere namen mensen eerder geneigd zijn bijv adressen van objecten mee te geven ipv iterators.
WAAAAAROM zijn ze dan niet private?!?!?

Ik moet terugnemen dat ik een stuk hierboven zei dat ik geen ontwerpfouten in de STL kende... als wat je hier zegt waar is is het een enorme...
Wel interesant. Ik ben ff wat gaan zoeken, op usenet is iemand met precies dezelfde vraag:
STL & inheritance

Het komt er op neer dat ze niet totaal de functionaliteit van deriven willen uitsluiten. Je zou bijvoorbeeld van een string klas kunnen deriven om uitsluitend nieuwe functies toe te voegen. Voorwaarde moet wel zijn dat je geen nieuwe datamembers toevoegt en dus ook geen destructor nodig hebt.
Gezien het feit dat vector voor zover ik weet een template is waar je iedere pointer in kunt frotten zie ik je probleem niet.
Tuurlijk is het wel over te zetten. De vraag is of je bijvoorbeeld gemakkelijk een std::copy(curryIterator, curryEindIterator, stlInserter) kan doen.

Ik geloof dat Stroustrup ook een boek heeft geschreven 'Design and Evolution of C++' ofzo, daar zal het vast wel in staan ... maarja die heb ik niet :P

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 02:22
Op maandag 25 maart 2002 18:35 schreef curry684 het volgende:

[..]

Ik neem Stroustrup serieus wat de taal betreft, niet wat betreft de standard libs die imho code rommelig en onleesbaar maken. Uniformiteit en interoperabiliteit zijn voor mij 2 hele sluitende redenen om eigen implementaties te maken van standaard spul.
Stroustrup is ook de language guru; library gurus zijn bv Matthew Austern en tegenwoordig ook Andrei Alexandrescu. Hun boeken wel eens gelezen?
En wat het zelf bakken van STLs betreft, dan ben je in goed gezelschap - ik ken redelijk wat mensen die dat gedaan hebben.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


Verwijderd

Op dinsdag 26 maart 2002 13:23 schreef MSalters het volgende:
En wat het zelf bakken van STLs betreft,
Ik hoop dat je alleen het zelf implementeren bedoelt, want als je er zelf één verzint is het geen STL meer :).

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 02:22
Op maandag 25 maart 2002 20:49 schreef OiSyN het volgende:
Allereerst zijn alle klassen met een kleine letter. 'T is maar wat je gewend bent, maar ik vind dat heel verwarrend.

En dan nog de eindeloze lijsten aan typedefs, voor elke mogelijke combinatie wordt wel een nieuw type gedefinieerd
Tsja. 't Is of typedefs of zoiets als (uit echte code)
code:
1
2
std::map< std::basic_string<std::iterator_traits<std::deque<char>::iterator>::value_type >,
        std::basic_string<std::iterator_traits<std::deque<char>::iterator>::value_type >        >

En dan hebben we het nog niet over de signature van de functie die dit ding returned :Y)
En natuurlijk de methodenamen die gewoon op attribuutnamen lijken. Als ik een klasse maak en ik moet in de klasse een lengte bijhouden die je van buitenaf op kunt vragen met een functie, dan noem ik die var length en de functie getLength (), maar bij de STL klassen is het altijd nogal onduidelijk wat de namen zijn (iets als buflen ofzoiets), en de functie heeft de naam die ik de variabele zou geven (length ()) dus.
STL heeft altijd size() in alle containers.
En als we het dan toch over de functienamen hebben, het lijkt wel een sport om die zo cryptisch mogelijk te kiezen. Een stukje uit streambuf:
code:
1
...

jaaja... eback, gptr, egptr, imbue :? Heel intuitief allemaal (NOT)
Dan heb je dan ook geen STL code :Z STL zijn de CIA, Containers, Iterators & Algorithms.
Evengoed is streambuf zo simpel dat ik de laatste maand er gemiddeld een per week schrijf.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 09-09 22:48

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ligt het aan mij of heb je een beetje moeite met het schrijven van reacties waarin je juist niet doet alsof je op iemand neerkijkt (ik ga er dan ook niet eens op in, op zo'n kinderachtige manier wens ik niet te discussieren)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 02:22
Op dinsdag 26 maart 2002 17:45 schreef OiSyN het volgende:
Ligt het aan mij of heb je een beetje moeite met het schrijven van reacties waarin je juist niet doet alsof je op iemand neerkijkt (ik ga er dan ook niet eens op in, op zo'n kinderachtige manier wens ik niet te discussieren)
Zucht.

Je hebt wel een punt dat de namen in C++ niet altijd consistent zijn. Er is een verschil tussen de namen binnen de STL, en de rest van de library.

Alleen is het fundamenteel dat binnen de STL de namen wel altiijd consistent zijn. Dat maakt Generic Programming mogelijk, en daarmee de STL zelf. Zo werken container adapters alleen als containers een member size() hebben.
Namen als get_size(), Size() of length() werken gewoon niet.

Evengoed zijn typedefs een essentieel punt in Generic Programming; ze vormen het equivalent assigment operatoren in de runtime language.

Als je dat kwalificeert als
eindeloze lijsten aan typedefs
bij de STL klassen is het altijd nogal onduidelijk wat de namen zijn
, tsja. Iedereen mag vinden wat hij wil; maar dat komt op mij inderdaad over als een beperkt overzicht. Zelfs dat is geen verwijt; je wordt nou eenmaal niet geboren met 10 jaar ervaring.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 02:22
Op maandag 25 maart 2002 21:30 schreef OiSyN het volgende:


hmmz, ik stop een 2d array van pixels liever niet in een std::vector <std::vector<int> >, al is het alleen maar om performanceoverwegingen.
Wel eens aan gemeten?

Ik toevallig wel, voor m'n afstudeerwerk (TUD, fac. TN, PatroonHerkennings groep). Verschil tussen lag tussen de -5% en +15%, en gemiddeld 6%, in het voordeel van templates(!) Nu varieert het tussen compiler versies, HW, en nog wat factoren, en zijn er inmiddels nieuwere compilers, maar de fundamentele conclusie blijft overeind dat zelf coden niet automatisch sneller is.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 02:22
Op dinsdag 26 maart 2002 02:14 schreef curry684 het volgende:

Ikzelf heb het nooit intensief genoeg gebruikt om ontwerpfouten te kunnen ontdekken. Ik walg daarentegen van dingen als deze quote uit std::string:
code:
1
2
3
4
5
6
7
8
    size_type find_first_of(const basic_string& right,
      size_type off = 0) const;
    size_type find_first_of(const value_type *ptr,
      size_type off, size_type count) const;
    size_type find_first_of(const value_type *ptr,
      size_type off = 0) const;
    size_type find_first_of(value_type ch,
      size_type off = 0) const;


ptr, ch en right zijn echt parameternamen die behulpzaam zijn bij development (NOT).
• Ik heb echt geen idee wat de off parameter daar doet. Ik gok op offset maar die 3 karakters gaan je leven toch niet redden?

Sowieso, als je dan al 20 overloads per functie levert, maak dan ook een extra stapel overloads voor die offset-functies, scheelt een stuk optimalisatie dat de compiler heel hoogstwaarschijnlijk niet voor mekaar krijgt...
Ik gok dat je een standaard header quote. Voor sommige compilers zijn er goede redenen om in (juist) die files kortaf te zijn; b.v. voor de MSVC6 gebruikers om C4786 te vermijden (identifier too long)

En ja, diezelfde MSVC6 gebruikers hebben botte pech dat MS geen updates uitbracht voor die library. Niet voor niets verkoopt Dinkumware die updates; in 4 jaar is er meer mogelijk dan in de 6 maanden die voor VC6 beschikbaar waren.
Met 4 jaar tijd kun je gaan optimaliseren; in 6 maanden kregen ze de basis niet eens af.
Verder op Orphix:
[..]

BULLSHIT. Die functies zijn protected zodat ze aangesproken kunnen worden door de inheritende programmeur, en dan zijn onduidelijke namen als dat ONVERGEEFLIJK. Wat een moeite was het geweest om daar duidelijke functie- en parameternamen te gebruiken?!?
Goed punt. Ongeveer de belangrijkste reden is dat er niemand zich aanbood om nieuwe namen te verzinnen. Klinkt dom, maar zo gaan dat soort dingen.
Ik vind persoonlijk dat zelfs je private functies 100% begrijpbaar moeten zijn, omdat zelfs dat voor de afleider behulpzaam is bij het begrijpen van de originele implementatie.
Daar ben ik het niet altijd mee eens; alleen als de implementatie moet weten hoe de base in elkaar zit. Maar voor bv. streambuf is dat niet het geval, je hoeft niet te weten hoe MS/Dinkumware die in elkaar heeft gezet. Daar is alleen de public/protected interface van belang, voor de rest moet je vertrouwen op de documentatie.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 09-09 22:48

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op dinsdag 26 maart 2002 18:31 schreef MSalters het volgende:

[..]

Zucht.

Je hebt wel een punt dat de namen in C++ niet altijd consistent zijn. Er is een verschil tussen de namen binnen de STL, en de rest van de library.

Alleen is het fundamenteel dat binnen de STL de namen wel altiijd consistent zijn. Dat maakt Generic Programming mogelijk, en daarmee de STL zelf. Zo werken container adapters alleen als containers een member size() hebben.
Namen als get_size(), Size() of length() werken gewoon niet.
dat bedoel ik helemaal niet, hoewel een sting bijvoorbeeld ook de functie length () heeft (die weer precies hetzelfde doet als size ()). Ik doelde meer op het feit dat ik het verwarrend vindt. Meestal hangt de naam van de functie af van watgene dat ie doet, zoals doeIets (). In dit geval wordt het dus vraagGrootteOp (), getSize () dus. En size is dan de variabele waarin de lengte staat (die er overigens niet toe doet)
Evengoed zijn typedefs een essentieel punt in Generic Programming; ze vormen het equivalent assigment operatoren in de runtime language.
ho, ik zeg niet dat ze er niet moeten zijn, aangezien je dan of (1) hele lange definities krijgt zoals je al aangaf, of (2) minder vrijheid hebt, om het zo maar even uit te drukken. Ze hadden het echter wel minder verwarrend kunnen maken (eerst en typedef, en daarna weer een nieuw type typedeffen dat precies hetzelfde is als die vorige, en daarvan weer een exact gelijke type creeeren)
Als je dat kwalificeert als...
fijn dat je de rest van me verhaal weghaalt

en wat ik ook nog zei:
Maar ik denk dat jullie mij een beetje verkeerd begrijpen. Het doel van de STL vind ik zeker goed, het had van mij alleen wat intuitiever en duidelijker gemogen, en als ik in dezelfde tijd een alternatief kan gebruiken dan doe ik dat meestal (zie de printf vs. cout discussies :))

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 09-09 22:48

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op dinsdag 26 maart 2002 18:36 schreef MSalters het volgende:

Wel eens aan gemeten?

Ik toevallig wel
ik hoef niet te meten, steeds alloceren van (nutteloze) blokken geheugen is per definitie niet echt snel te noemen, dus dat kun je beter vermijden door in 1 keer een groot blok te alloceren, ipv een blok waar je vector<int>s in opslaat, en dan voor elk element in die array ook nog eens een rij pixels

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 04-09 14:38

curry684

left part of the evil twins

Op dinsdag 26 maart 2002 19:31 schreef OiSyN het volgende:
ik hoef niet te meten, steeds alloceren van (nutteloze) blokken geheugen is per definitie niet echt snel te noemen, dus dat kun je beter vermijden door in 1 keer een groot blok te alloceren, ipv een blok waar je vector<int>s in opslaat, en dan voor elk element in die array ook nog eens een rij pixels
offtopic:
Recent op m'n werk een stuk framework-kernel herschreven zodat we sub-256 byte blokken (o.a. vrijwel alle classes dus) niet meer constant vrijgeven aan de heapmanager maar zelf in sorted chains bijhouden zodat we bij een alloc voor bijvoorbeeld 30 bytes gewoon meteen een pointer konden retourneren. Zelfs op ons legendarische geval waarbij binnen een paar minuten amongst many other things 10 miljoen (!!!) 52-byte-blokken werden gealloceerd met een peak-usage van 1140 scheelde dit nog geen 5% in performance.

Ergo de standaard NT-heapmanager is moeilijk te verslaan... :Y)


* curry684 heeft nog weinig zin in het ontopic gedeelte van de discussie trouwens O+

Professionele website nodig?


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 09-09 22:48

.oisyn

Moderator Devschuur®

Demotivational Speaker

[b]Op dinsdag 26 maart 2002 21:06 schreef curry684 een verhaal over heapmanagement]

Ergo de standaard NT-heapmanager is moeilijk te verslaan... :Y)
hmm interessant, dan werkt het dus nog beter dan ik dacht (dat, of jouw verbetering zoog gewoon :P j/k)

maar dan nog, als elke scanline van je image kriskras door je geheugen is verspreid komt het je cache niet echt ten goede. Bovendien wil je ze voor beeldbewerking allemaal bij elkaar hebben staan zodat je makkelijk bij elke pixel kunt komen
* curry684 heeft nog weinig zin in het ontopic gedeelte van de discussie trouwens O+
kheb helemaal geen zin meer in een discussie (alles is zo'n beetje al gezegd), dus * .oisyn weert verder ook deze thread :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 02:22
Op dinsdag 26 maart 2002 19:31 schreef OiSyN het volgende:

[..]

ik hoef niet te meten, steeds alloceren van (nutteloze) blokken geheugen is per definitie niet echt snel te noemen, dus dat kun je beter vermijden door in 1 keer een groot blok te alloceren, ipv een blok waar je vector<int>s in opslaat, en dan voor elk element in die array ook nog eens een rij pixels
Er is een ctor die meteen alle geheugen alloceert; precies zoveel als je nodig hebt. Weliswaar heb je dan enige nutteloze bytes( elke lijn is even groot ), maar gezien het feit dat de cache toch typisch op line-basis (bv 16 bytes) werkt is dat in de praktijk gratis.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein

Pagina: 1