amiga-news DEUTSCHE VERSION
.
Links| Forums| Comments| Report news
.
Chat| Polls| Newsticker| Archive
.

amiga-news.de Forum > Programmierung > Mathematiker hier? [ - Search - New posts - Register - Login - ]

1 -2- [ - Post reply - ]

2005-05-20, 19:24 h

Holger
Posts: 8116
User
Zitat:
Original von MaikG:
>Dim a$(60000)
>For i&=0 to 60000
>a$(i&)="bla"
>Next i&

Ich sag doch das ist langsamer.
Versuch mal mit der Routine das Telefonbuch
von z.B. Berlin zu Sortieren.

Wie kann das langsamer sein, wo es doch mit 16Bit Variable gar nicht funktioniert?
Zitat:
Wenn Long Integer genauso schnell währe, täte das keiner
Integer benutzten. Maxon Basic, war früher mal Highsoft Basic.

Weil 16Bit früher auf C64 und 8086 schneller als 32Bit war, heißt das nicht, das man die Programmiertechniken von damals beibehalten muß.
Natürlich gibt es Situationen, in denen es eine Rolle spielt, zum Beispiel bei der Frage "Dim n%(10000)" oder "Dim n&(10000)", aber eine Schleifenvariable sollte definitiv nicht dazu gehören.
Und vor kurzem noch hast Du floating-point benutzt, wo integer vollkommen ausreichend war, und hast Dich nicht an dem (in diesem Fall wirklich vorhandenem) Performanceunterschied gestört.

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Answer - Quote - Direct link - ]

2005-05-20, 19:30 h

Holger
Posts: 8116
User
Nachtrag:
Ich kenne übrigens keine Programmierer, der bei solchen Dingen 16Bit-Variablen nutzen würde. Ich kenne allerdings auch keine Basic-Programmierer.

[ - Answer - Quote - Direct link - ]

2005-05-21, 00:30 h

NoImag
Posts: 1050
User
Zitat:
Wenn Long Integer genauso schnell währe, täte das keiner
Integer benutzten.


Auf 32-Bit-Prozessoren gibt es normalerweise keinen Grund 16-Bit-Variablen zu benutzen, es sei denn, du musst Speicher sparen. Bei einer Zählvariablen sollte dies aber kein wirkliches Argument sein.

Tschüß,


[ - Answer - Quote - Direct link - ]

2005-05-21, 10:45 h

MaikG
Posts: 5172
User
>Wie kann das langsamer sein, wo es doch mit 16Bit Variable
>gar nicht funktioniert?

Wenn man es mit % und & macht, bis 30000 und vergleicht.


>Weil 16Bit früher auf C64 und 8086 schneller als 32Bit war,
>heißt das nicht, das man die Programmiertechniken von
>damals beibehalten muß.

Ich weiss nicht aber das Programm schrieb ich zuerst auf einen
030er, der volle 32Bit hat.

>Und vor kurzem noch hast Du floating-point benutzt, wo
>integer vollkommen ausreichend war, und hast Dich nicht
>an dem (in diesem Fall wirklich vorhandenem)
>Performanceunterschied gestört.

Es mach einen Unterschied ob man nur 20x die Funktion
benötigt oder 30000x.


[ - Answer - Quote - Direct link - ]

2005-05-21, 11:15 h

Ralf27
Posts: 2779
User
@MaikG:

Du machst mich neugierig:

Schreibst du in MBasic? Was für Programme hast du denn schon geschrieben?

Ich suche halt Leute im Amiga-Universum die MBasic programmieren. Es wäre einfach unglaublich wenn ich einen finden würde der real was mit MBasic für unsere Kiste schreiben würde. :D
--
http://www.alternativercomputerclub.de.vu

[ - Answer - Quote - Direct link - ]

2005-05-21, 15:01 h

MaikG
Posts: 5172
User
>sec% = blocks&/75
>min% = sec%/60
>sec% = sec% - min% * 60

Geht doch nicht...
Ergibt abweichende werte.

@Ralf27
ich schreib nur Kleinigkeiten für den Eigenbedarf.
Also nicht wirklich was jemand anderes gebrauchen könnte.


Eine Long Integer schleife mit 31000 ist um 0,02 sekunden
langsamer als eine Integer. Mit 68060.

[ - Answer - Quote - Direct link - ]

2005-05-21, 19:40 h

Palgucker
Posts: 1342
User
Ich weis zwar nicht warum, aber irgendwie ist die Modulo Berechnung hier irgendwie zu kurz gekommen, obwohl sie sich gerade zur berechnung der "Restsekunden" anbietet.
Kann MaxonBasic kein Modulo? - kann ich mir nicht vorstellen.
Dein Programm könnte dann etwa so aussehen:

>allsec% = blocks&/75
>min% = allsec%/60
>sec% = allsec% mod 60

Ob der Operand für die Modulo bei MaxonBasic nun "mod" heist, weiß ich nicht, aber dafür ist z.B Ralf27 ein Ansprechpartner 1. Wahl.

mfg Palgucker


[ - Answer - Quote - Direct link - ]

2005-05-21, 21:11 h

MaikG
Posts: 5172
User
>Kann MaxonBasic kein Modulo? - kann ich mir nicht
>vorstellen.

Was soll das sein?


>Dein Programm könnte dann etwa so aussehen:

Mein Programm läuft schon, zwar mit Floating Point
Variablen, aber das macht nichts, ist trotzdem
in ein bruchteil einer Sekunde fertig.

[ - Answer - Quote - Direct link - ]

2005-05-21, 21:36 h

Ralf27
Posts: 2779
User
Zitat:
Original von MaikG:
>Kann MaxonBasic kein Modulo? - kann ich mir nicht
>vorstellen.

Was soll das sein?


Versuch doch einfach mal folgendes:

for x=0 to 20
print x mod 3
next

Damit sieht man recht einfach was dieses Modulo macht. :)



--
http://www.alternativercomputerclub.de.vu

[ - Answer - Quote - Direct link - ]

2005-05-21, 21:42 h

Ralf27
Posts: 2779
User
Zitat:
Original von Palgucker:
Ob der Operand für die Modulo bei MaxonBasic nun "mod" heist, weiß ich nicht, aber dafür ist z.B Ralf27 ein Ansprechpartner 1. Wahl.


Danke für die Blumen. :D
--
http://www.alternativercomputerclub.de.vu

[ - Answer - Quote - Direct link - ]

2005-05-21, 23:51 h

Palgucker
Posts: 1342
User
@ MaikG

quote:


>Kann MaxonBasic kein Modulo? - kann ich mir nicht
>vorstellen.

Was soll das sein?


Da ha'm wir's
Doch Grundschule verpasst;) - aber Spass beiseite.

Du wirst Dich eventuell an die 2. oder 3.Klasse erinnern. Da musten wir eben solche Sachen rechnen,wie:

14 geteilt durch 5

Dort kam dann eben heraus, das dies 2 ist - Rest 4.
Und genau diesen Rest berechnet die Modulorechnung. Also gar nichts kompliziertes. Merkwürdiger Weise kann ich mich auch nicht erinnern, das ich in den folgenden 7-8 Schuljahren jemals was von Modula gehöhrt habe. Das diese Berechnungsform zu den "Grundrechenarten" gehört, habe ich eigendlich auch erst mit dem Besitz eines Rechners festgestellt.

Das kannst Du z.B. auch in der Shell ausprobieren:

Eval 14 mod 5

oder diese Script:

code:
;GetPlayTime
.key Blocks
.bra {
.ket }
setenv allsec 'eval ({Blocks}*1000) / 75'
setenv min 'eval $allsec / 60000'
setenv sec 'eval $allsec/1000 mod 60'; <-- da isses!
setenv milli 'eval $allsec-({Blocks}/75*1000)'
echo "Laufzeit: $min:$sec:$milli"
unsetenv allsec
unsetenv min
unsetenv sec
unsetenv milli


kannst Du ja mal aus "Geikel" mit "execute Datei Blockzahl" ausprobieren

mfg Palgucker

[ - Answer - Quote - Direct link - ]

2005-05-22, 08:57 h

MaikG
Posts: 5172
User
>Du wirst Dich eventuell an die 2. oder 3.Klasse erinnern.
>Da musten wir eben solche Sachen rechnen,wie:

>14 geteilt durch 5

>Dort kam dann eben heraus, das dies 2 ist - Rest 4.

Ich glaub damit tat ich mich schwer, weil bei mir
ist das 2.8 - warum man einen Rest benötigt habe
ich nie verstanden. Ich dachte die bringen mir das
bei weil sie denken ich könnte nicht mit Komma rechnen.


>Eval 14 mod 5


= 4

MaxonBasic hat den Befehl mod aber in Holger's programm
ist der Befehl nicht gewesen.

[ - Answer - Quote - Direct link - ]

2005-05-22, 09:21 h

Flinx
Posts: 1073
User
Zitat:
Original von MaikG:
Ich glaub damit tat ich mich schwer, weil bei mir
ist das 2.8 - warum man einen Rest benötigt habe
ich nie verstanden.


Auch jetzt nicht, wo er hier doch offensichtlich gebraucht wird?

Abgesehen davon, daß Du bei 2,8 ja auch einen Rest hast - 0,8 nämlich. Genau um das darzustellen, hat irgendwann mal jemand das Komma erfunden...

[ - Answer - Quote - Direct link - ]

2005-05-22, 14:31 h

MaikG
Posts: 5172
User
>Auch jetzt nicht, wo er hier doch offensichtlich gebraucht
>wird?

Okay, das ist aber das 1.mal in 14 Jahren Programmieren vorgekommen.

[ - Answer - Quote - Direct link - ]

2005-05-22, 14:59 h

Ralf27
Posts: 2779
User
Zitat:
Original von MaikG:
>Auch jetzt nicht, wo er hier doch offensichtlich gebraucht
>wird?

Okay, das ist aber das 1.mal in 14 Jahren Programmieren vorgekommen.


Nun, das ist halt auch so ein Befehl denn man umgehen kann, bzw. aufwendig umgehn.
So ist das auch z.b. bei a=b and 4 oder a=b or 4 oder a=b xor 4 oder sonstigen Bitmanipulationen. Man kann sie umgehn bzw. umschreiben, aber wenn man diese Befehle benutzt dann ist es einfacher, bzw. logischer.

MBasic bietet hier sehr viel, bzw. benutze ich das auch nicht. Ich tipp hier nur die Includes, die ich (leider) auch nicht benutze, was ich eigentlich machen sollte.
--
http://www.alternativercomputerclub.de.vu

[ - Answer - Quote - Direct link - ]

2005-05-22, 22:28 h

NoImag
Posts: 1050
User
Zitat:
Original von MaikG:
>Du wirst Dich eventuell an die 2. oder 3.Klasse erinnern.
>Da musten wir eben solche Sachen rechnen,wie:

>14 geteilt durch 5

>Dort kam dann eben heraus, das dies 2 ist - Rest 4.

Ich glaub damit tat ich mich schwer, weil bei mir
ist das 2.8 - warum man einen Rest benötigt habe
ich nie verstanden. Ich dachte die bringen mir das
bei weil sie denken ich könnte nicht mit Komma rechnen.


Du hast es erkannt. In der Grundschule konntest du noch nicht mit Kommas rechnen. Es gab nur Ganze Zahlen (Z). Die Bruchrechnung, die Vorausetzung für Kommazahlen (Dezimalbrüche, rationale Zahlen, Q) ist, kommt erst in Klasse 5.

Tschüß,


[ - Answer - Quote - Direct link - ]


1 -2- [ - Post reply - ]


amiga-news.de Forum > Programmierung > Mathematiker hier? [ - Search - New posts - Register - Login - ]


.
Masthead | Privacy policy | Netiquette | Advertising | Contact
Copyright © 1998-2025 by amiga-news.de - all rights reserved.
.