Dinomo schrieb:
also bei mir hat das kopieren von win -> mac, so um die 16 GB, mal ca. 60 min. gedauert. Das es viel langsamer ist, als von win zu win liegt daran, dass
...der TCP/IP Stack von Windows nicht sonderlich effizient ist...
und
...dass Microsoft scheinbar bei Datentransfers zwischen zwei Windows Rechnern noch die ein oder andere nichtdokumentierte Routine/API verwendet um die Daten ein bisserl performanter zu schicken...
Hängst du dein Mac an z.B. einen Linux PC auf dem die Daten per Samba freigegeben werden, dann wirst du zwischen den beiden Rechnern durchaus eine höhere Netzwerkauslastung als zwischen Mac<-->Windows feststellen.
Dinomo schrieb:
es zwei unterschiedliche Betriebssysteme mit UNTERSCHIEDLICHEN Datenadressierungssysstemen sind. Da mac ein UNIX dateisystem verwendet, welches in der Datenadressierung nach dem "big-endian" Prinzip funktioniert und Win nach dem "little-endian"-Prinzip, bedeutet das, dass die Daten einmal komplett "umgekrempelt" werden müssen. Für dieses Konverterieren braucht Mac OS dann doch ziemlich viel Leistung und Zeit!
Das Dateisystem oder Betriebssystem hat damit nichts zu tun. Die komplette Rechner Architektur inklusive der CPU ist im Intel Lager "Little-Endian" während es bei Apple, IBM, HP, Motorola und Sun Architekturen um "Big-Endian" Architekturen handelt.
Daher:
Gute Idee, leider falsch.
Der Mac mit seiner (früher Motorola 68000er Architektur und heute mit seiner) PowerPC Architektur muss allerdings gar keine Byte-Order Anpassung durchführen... Selbst die ersten noch von Steve Wozniak zusammen gelöteten Apple I waren bereits aufgrund der verwendeten MOS 6502 CPU "Big-Endian" Architekturen.
Das Endianess-Problem (oder "NUXI-Problem") ist für unseren Mac also gar keines.
Default endian formats for certain computer platforms
* Pure Big Endian: Sun SPARC, MOS 6502, Motorola 68000, Motorola 88000
* Bi-Endian, running in Big Endian mode: MIPS running IRIX, PA-RISC, most Power and PowerPC systems
* Bi-Endian, running in Little Endian mode: MIPS running Ultrix, most DEC Alpha, IA-64 running Linux
* Little Endian: Intel 8080, Intel x86, AMD64, DEC VAX
ausführlicher erklärt im Wikipedia Artikel:
Endianness
http://en.wikipedia.org/wiki/Endianness
Beide Endianess System (Little- wie Big-Endian) rufen im TCP/IP Stack die dafür vorgesehenen C Routinen htonl() , htons(), ntohl() und ntohs() auf um die ByteOrder von der lokalen "Host Byteorder" in die "Network Byteorder" umzuwandeln und vice versa.
Da die Network Byteorder (nicht) zufälligerweise Big-Endian ist, wird auf Big-Endian Architekturen für diese vier Routinen keine Performance verbraucht. Auf Little-Endian Architekturen wie z.B. dem Intel PentiumM/4/Celeron oder AMD/AMD64 muss hingegen die Byteorder Konvertierung durchgeführt werden -- was halt ein bisserl Performance kostet. Umso mehr, wenn der TCP/IP Stack des verwendeten Betriebssystem dies nicht performant durchführt
wer sich tiefer damit beschäftigen möchte:
http://www.cs.rpi.edu/courses/sysprog/sockets/byteorder.html
http://www.delorie.com/gnu/docs/glibc/libc_322.html
http://www.codeproject.com/cpp/endianness.asp
DAVs Endian FAQ
http://www.rdrop.com/~cary/html/endian_faq.html
The big-endian v. little-endian controversy, how to avoid stupid mistakes in hardware and software, ON HOLY WARS AND A PLEA FOR PEACE.