.| Autor | Beitrag |
|---|---|
|
000 06.07.2002, 23:55 Mudder |
Moin, auch wenn das jetzt sehr Newbiehaft klingt, aber in welchen Programmiersprachen werden eigentlich Mods und Co geschrieben? Mudder -- |
|
Profil || Suche |
|
001 06.07.2002, 23:58 dz|-freezer |
das kann man nicht genau sagen da die games in verschiedenen sprachen geschrieben worden sind. hl ist z.B. in c++ geschrieben. -- |
|
Profil || Suche |
|
002 11.07.2002, 21:16 The_real_KANE |
verschiedene sprachen? Die Welt geht unter, gehen sie mit! Dieser Beitrag wurde am 11.07.2002 um 21:16 von The_real_KANE bearbeitet. |
|
Profil || Suche |
|
003 11.07.2002, 21:18 KhanRKerensky |
Wärend die ganzen Desktop Progrämmchen in tausend verschiedenen Sprachen geschrieben werden... Englisch, Deutsch, Spanisch, Französisch usw :D Quake hat aber afaik auch noch Assambler in sich. --"[...] you're going to burn in a very special level of Hell. A level they reserve for child molesters and people who talk at the theater." - Book |
|
Profil || Suche |
|
004 11.07.2002, 22:17 Mazze |
Gut, ASM haben noch viele in sich...aber halt nur ein kleiner Teil! --BattleTech-MOD: |
|
Profil || Suche |
|
005 19.07.2002, 23:19 Onkel Dittmeyer |
Das aber nur zur Optimierung von bestimmten Sachen afaik. |
|
Profil || Suche |
|
006 20.07.2002, 10:19 Prefect |
Jein. Es gibt da ja die 80-20-Regel, 20% des Codes sind für 80% der CPU-Cycles verantwortlich (manche reden sogar von 90-10, aber das kommt aufs Programm an). Beispiel: Jemand kommt auf die genial Idee statt Der Code hat (zumindest für positive Zahlen) garantiert das selbe Ergebnis. Der Programmierer hat sich aber wahrscheinlich gedacht, daß eine Division länger dauert als eine Shift-Operation. Das stimmt auch - aber typischerweise optimieren Compiler sowas sogar wenn Optimierungen ausgeschaltet sind... Meistens kommen die echten Optimierungen daher, daß man effizientere Algorithmen einsetzt, z.B. Trees statt Arrays, A* statt Dijkstra, Vertex Arrays statt Immediate Mode. Oft kann man auch einfach optimieren, indem man bestimmte Datenstrukturen effizienter auslegt. Was ist der Unterschied zwischen:
und:
Ganz einfach: die erste Struktur benötigt auf typischen 32-Bitsystemen 24 Bytes, die zweite Struktur nur 16 Bytes. Bei der ersten Struktur werden auf Grund des Alignments Bytes verschwendet. Das hat aber zur Folge, daß die erste Struktur mehr als eine halbe Cacheline belegt, und ein für den Prozessor unangenehmes Alignment hat. Wenn man jetzt auf riesigen Arrays dieser Strukturen nicht sequentiell arbeitet ist die zweite Version eindeutig im Vorteil, da man sie konsequent auf 16-Byte-Grenzen ablegen kann. Der Prozessor kann dann die gesamte Struktur auf einen Schlag in den Speicher holen, was bei der ersten nicht der Fall ist. Aber auch solche Optimierungen sind nur relevant, wenn die Datenstruktur andauernd massiv benutzt wird. Assembler kann man übrigens komplett vergessen, wenn man nicht gerade die erweiterten Instructionsets wie MMX und so verwendet. cu, Widelands - Gemütliche Aufbaustrategie, Free Software Dieser Beitrag wurde am 20.07.2002 um 10:20 von Prefect bearbeitet. |
|
Profil || Suche |
|
007 20.07.2002, 12:47 Mazze |
Hm? oder BattleTech-MOD: |
|
Profil || Suche |
|
008 20.07.2002, 13:19 apfelkorn |
doch, es ist das gleiche, nur manchmal ist es übersichtlicher das einzeln zu schreiben. -- |
|
Profil || Suche |
|
009 20.07.2002, 13:37 Archangel |
NEIN, es ist NICHT das gleiche, lest doch mal! das hängt damit zusammen, dass jede zeile in der strukturdeklaration an 32bit (auf 32 bit-systemen) alignt wird, also 4 bytes. struct a { verbraucht acht bytes, während: struct b { nur 4 bytes verbraucht. noch ein beispiel: struct c { also ist sizeof(struct c) = 4 + 8 + 4 + 8 = 24, und nicht, wie man vermuten könnte, = 1 + 4 + 4 + 4 + 2 + 2 + 2 = 19 anders geschrieben wäre die struct: struct d { hier ist aber sizeof(struct d) = 4 + 4 + 4 + 4 + 4 + 4 + 4 = 28 -- |
|
Profil || Suche |
|
010 20.07.2002, 22:12 Prefect |
Archangel: Leider enthält dein Post recht viel Käse.
und
Die Alignments des Compilers sind nicht pro Zeile. Es ist nur so, daß (und AFAIK ist das im Standard vorgeschrieben) der Compiler die Reihenfolge der Elemente einer struct _nie_ ändert. Gleichzeitig versucht der Compiler aber, für optimale Datenzugriffe die Variablen auf vernünftige Grenzen zu alignen. Wenn dann zwischen zwei Chars ein Int ist führt dieses Alignment zu Speicherverschwendung. Ob zwei aufeinanderfolgende Membervariablen in einer Zeile oder in zwei geschrieben werden ist dabei allerdings irrelevant. cu, Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
011 20.07.2002, 22:16 Archangel |
hrm ok prefect, du hast recht.. leider hatt ich die structs in meinem testproggi so gewählt, dass es genau so hinkam.. (nein es waren nicht die structs, die ich gepostet hab..) also sry für den mist, den ich verzapft hab :| --Dieser Beitrag wurde am 20.07.2002 um 22:31 von Archangel bearbeitet. |
|
Profil || Suche |

