tom, mich würde wundern was mehr resourcen braucht. mit fseek an position 6 springen und dann mit fread 2 byte auslesen oder den ganzen scheiß über NSData machen  
									
									
									
								 
									 
									Original von gritsch
tom, mich würde wundern was mehr resourcen braucht. mit fseek an position 6 springen und dann mit fread 2 byte auslesen oder den ganzen &$%§$" über NSData machen
 
									Original von Tom9811
Dann würde ich einfach den bequemeren weg gehen. Der beginnt in jedem Falle mit NS.
Original von Tom9811
Wenn du mir eine Implementierung zeigst, die all das bietet, was Cocoa bietet, fange ich einen Performancevergleich an.
 
									
Wer sagt Dir dass NSFileHandle ressourcenfreundlicher als NSData ist?Original von gritsch
also wenn ich die ersten 8 byte einer datei brauche (wie ja im thread steht) dann nehm ich bestimmt kein NSData. Das lass ich mir von niemanem einreden! NSFileHandle hingegen gerne
Hierzu gibt es schöne aber leider sehr wenig bekannte Funktionen in Foundation: NSSwapLittleShortToHost (developer.apple.com/documentat…c/NSSwapLittleShortToHost)Original von gritsch
und eventuell bytes switchen
Original von hns
Wer sagt Dir dass NSFileHandle ressourcenfreundlicher als NSData ist?Original von gritsch
also wenn ich die ersten 8 byte einer datei brauche (wie ja im thread steht) dann nehm ich bestimmt kein NSData. Das lass ich mir von niemanem einreden! NSFileHandle hingegen gerne
fopen() und fread() legen ja auch erst mal einen Puffer an und lesen dann (sofern möglich) 1024 Bytes (oder so). Und picken dann die ersten 8 heraus. Da *könnte* NSData mit einem mapped-File ja effizienter vorgehen. Ob es das aber auch tut müßte man mal ausprobieren...
-- hns
Original von SaniT
Wie checke ich die Endians? Das hat doch was mit der Codierung zu tun?
Schonmal den Original Kernighan&Richie gelesen? Da sind Beispielimplementierungen drin.Original von gritsch
Wo steht denn das mit dem buffer? Das hab ich nicht gewusst und würde mich auch wundern warum fopen nen buffer anlegen sollte.
Die Datei ist mit einer Endianness geschrieben und der Prozessor interpretiert Bytefolgen nach einer evtl. anderen.Original von SaniT
Wie checke ich die Endians? Das hat doch was mit der Codierung zu tun?
Original von hns
Notfalls einfach ausprobieren. Es gibt ja nur 2 Möglichkeiten.
Original von hns
Original von gritsch
Ein FILE * ist so ein buffer. Schau Dir mal stdio.h an.
Normalerweise ja. Kann man ein- und ausschalten. Ergiebiger als die stdio.h ist "man setvbuf". Ein NSFileHandle ist übrigens typischerweise auch buffered.
Andererseits: Ihr wollt doch nicht ernsthaft anhand der Performance-Unterschiede zwischen FILE und NSFileHandle die API wählen, oder? Beide sind sehr schnell - schnell genug um zu behaupten, dass es bei Performance-Problemen in den meisten Fällen bessere Ansatzpunkte zur Optimierung gibt. Insbesondere ist das wilde Mischen von APIs eine Garantie dafür, dass das Resultat nicht ressourcenschonend wird.