"We are back" « oc.at

[C++] Mehrdimensionales dynamisches Array

thorn][bySSG 14.08.2002 - 08:21 4753 53
Posts

FreakyDrOC

Addicted
Avatar
Registered: Feb 2002
Location: Austria
Posts: 418
ich programmier seit 12 jahren
abasic, quickbasic, pascal, c(++), pli, cobol, prolog, asm, java, c#
(in ziemlich dieser reihenfolge)

ich sag jetzt einfach mal, ich kenn genug konzepte ;)
(@FMF: das sollte jetzt keine flame-aufforderung sein)

FMFlash

tranceCoder
Avatar
Registered: Mar 2001
Location: Wien
Posts: 2037
Zitat von FreakyDrOC
(@FMF: das sollte jetzt keine flame-aufforderung sein)

das hatte ich auch nicht vor :)

h4de5

-
Avatar
Registered: Sep 2001
Location: bgld
Posts: 1112
@ringding: gut, *konzeptumstürtz* vergess ma halt wieda liste.

maxt a typedef mit den elementn die du für chip brauxt (as flash said).
und in da klasse dann so wie du des am anfang gmacht hast nur halt:
..
TYP *abc;
..
abc = new TYP[100millionentrillionentausendtausend];
..

weis ned obs syntaxtisch richtix is, hab zur zeit kan compiler. probier halt mal.

FreakyDrOC

Addicted
Avatar
Registered: Feb 2002
Location: Austria
Posts: 418
Zitat von Ringding
Natürlich haben sowohl Arrays als auch Listen ihre Berechtigung. Nachdem ich aber nicht weiß, was das Programm tut, weiß ich auch nicht, ob eher die Liste oder eher das Array günstig ist. Jede Variante hat ihre guten und schlechten Seiten. Auch sehen wir hier ein typisches Beispiel für den alten Performance/Memory Trade-Off.

es gibt immer mehr ansätze...mehrere lösungen zu sehen ist eine grundvorraussetzung ein guter programmierer zu sein

ich habe deswegen nur den bis dahin nicht erwähnten ansatz der verketteten listen gebracht
(ich will jetzt auch nciht diskutieren, wo wie welche vor/nachteile von was sind)
entscheiden muss sowieso er

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Außerdem fällt mir grade ein, dass es nur in einer sehr bochenen C Runtime Library so sein wird, dass er für realloc den doppelten Speicherplatz braucht. In der Regel sollten diese Operationen auf Page-Basis funktionieren und somit nicht mehr Speicher brauchen als die Größe des Arrays. Durch geschicktes Pagen könnte man sogar die Kopieroperation überflüssig machen, ich weiß allerdings nicht, ob das in typischen Implementierungen passiert.

FreakyDrOC

Addicted
Avatar
Registered: Feb 2002
Location: Austria
Posts: 418
das ist ja das problem am array: wenn nach dem array schon was im speicher steht, kann ers net eifnach erweitern...und teilen kann ers ja ah net (wie du vorher schon erläutertest)
also geht nur ein (interner) kopiervorgang

thorn][bySSG

Little Overclocker
Avatar
Registered: Jul 2002
Location: Villach
Posts: 53
Zitat von FMFlash
ps: ich stelle mal meine meinung in den raum das klassen unübersichtlich sind und vorgänge nur unnötig komplizieren

Klassen sind vielleicht zwar langsamer, aber sicher übersichtlicher als Funktionsaufrufe.

Zitat
ich halts nicht für notwendig variablen und funktionen in eine klasse zu stecken die wiederum in sektionen unterteilt ist bei denen man aufpassen muss (vor allem beim datenaustausch von klassen untereinander) das sie sich auch ja "sehen" können

Wennst weißt wie des geht, is des voll easy und besser als wennst ana Funktion immer 10 variablen mitgeben mußt.
Bei einer Klasse greife ich dann einfach auf diese zu.
Exportire benötigte daten einfach mit return Methoden oder Pointern.


Soll ich die aufgabe des Pogramms erleutern ?

h4de5

-
Avatar
Registered: Sep 2001
Location: bgld
Posts: 1112
@thorn][bySSG: gib uns mal mehr infos über die aufgabe.
muss des array / die liste

* nur einmal angelegt,
* einmal dynamisch angelegt,
* oda im programm vergrössert werden ?

@plz no flames. helf ma ihm lieber gemeinsam.

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Zitat von thorn][bySSG
Soll ich die aufgabe des Pogramms erleutern ?

Sicher

thorn][bySSG

Little Overclocker
Avatar
Registered: Jul 2002
Location: Villach
Posts: 53
OK !

A Netzliste is wie gesagt recht groß , sie besteht aus :

Inputs
Outputs
InOuts
Wires
und Zellen

Es geht um die Zellen, es gibt bei mir insgesamt 99.000 Zellen, aus diesen Zellen muß ich Register herausfilter, das wären dann 18.000
Bei den Registern gibt es Eingänge , sogennante PINS.
Diese PINS haben Pfade dabei von wo das Signal kommt, ist fast immer eine andere Zelle der Netzliste oder halt ein Eingang des Chips.
Nun muß mein Prog herausfinden von wo das Signal kommt und dann gehts so weiter.

Das Ziel ist es ein Signal des Chips vom inneren nach außen hin zuverfolgen und zu schauen ob es über Keinen sogennanten Snakepath geht ( falsche Clockdomains )
Enden muß ein Signal immer bei einem Bestimmten Clock, falls des nicht so ist so soll das Pogramm dies erkennen.

D.h. (meiner Meinung nach ) immer einen Schritt nach den anderen und immer muß dabei für jedes gefundene Register die gesammte Netzliste durchsucht werden.
Mit I/O geht des halt entsprechend langsam.

MT brauch man da gar nicht probieren.


PS : Man hat mir gesagt : " Wenn wir wüßten wies geht, hätten wir das schon selber gemacht ".

Mein Problem is die Geschwindigkeit, die Algorithmen zur Analyse hab ich fast alle schon.

h4de5

-
Avatar
Registered: Sep 2001
Location: bgld
Posts: 1112
bahnhof :confused:

:D
*nachdenk* hab eh grad nix zu tun :rolleyes:

thorn][bySSG

Little Overclocker
Avatar
Registered: Jul 2002
Location: Villach
Posts: 53
Zitat von h4de5
bahnhof :confused:

So is es mir auch gegangen:D
und jetzt meistens auch:D

Den Chip von innen nach außen hin analysieren anhand der Netzliste:bash: :bash: :bash:

Master99

verträumter realist
Avatar
Registered: Jul 2001
Location: vie/grz
Posts: 12696
besteht eine möglichkeit, dass sich das programm z.b. 150MB im RAM reserviert und darin dann der dynamische Array gespeichert wird?

dann würd das hin&herkopieren entfallen...

h4de5

-
Avatar
Registered: Sep 2001
Location: bgld
Posts: 1112
*lautdenk*
also ein signal kommt von _chip.input_ herein. geht dann auch _zellen.register.PINS_ von dort dann weiter bis irgend wann auf _clock_ kommt.
und du musst des jez einfach kervehrtherum machen ?! also vom clock zum _chip.input_

mmhh. i glaub wennst eh schon fast alle aNalyseAlgorithmen hast, sollt wir uns über solche grund-legenden sachen ned mehr den kopf abbrechen.
ABER:
für jedes gefundene Register die gesammte Netzliste durchsucht werden.

muss des sein ??!? wirds doch an gscheiteren algorythmus geben, dasst ned alles durchsuchen musst.

thorn][bySSG

Little Overclocker
Avatar
Registered: Jul 2002
Location: Villach
Posts: 53
@Master 99

Sicher, aber nicht die Ganze File, da ich ja nach bestimmten Syntaxen suchen muß und die kommen da sehr oft vor.
Meist heißen die Zellen gleich und unterscheiden sich nur durch die Pfade der Pins.
Ich muß des zur Laufzeit anlegen, da ich nicht weiß wie viele Zellen es gibt.

@h4de5

Sicher, geht das ,aber nur wenn ich alles im Speicher habe und das ist ja mein Prob.
Wie soll ich das am besten anstellen.

Ich glaub wir sind vom ursprünglichen Problem ein bischen zu weit abgedriftet.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz