Einschätzung bezüglich eines Codeausschnittes

02/20/2016 03:45 Liihes#1
Code:
Global Const $Textinside = "qdw"
Global Const $Length = 69

For $i = 1 To $Length
$GeneratedText &= StringMid($Textinside, Random(1, StringLen ($Textinside ) ),1 )
Next
Denke ist weitestgehend selbsterklärend..
Zieht random aus dem String "qdw" einen char und speichert den daraus resultierenden String in "$GeneratedText".
Geht das "schöner"? Oder performanter? (Habe zwar keinerlei Probleme damit, will aber schließlich auch n paar neue Sachen dabei lernen.)

Danke im voraus,
Greetz.
02/20/2016 10:55 alpines#2
Das zieht nicht viel Zeit, alternativ kannst du probieren ob du den String Splittest und die Arrayindices ansprichst, vielleicht ist das ja schneller?
02/20/2016 12:00 Liihes#3
Erstmal danke für die Idee! :)
Geht ja nicht darum, dass es mir zu lange dauert. Würde halt nur gerne wissen ob es besser geht.
Die Arbeit mit Arrayindices ist für mich nicht sehr praktisch und würde in meinem Falle auch (hue.) länger dauern.

Falls iwer Ideen/Vorschläge hat, her damit. Ansonsten trz. Danke :)
02/20/2016 13:13 alpines#4
Mit Arrayindices zu arbeiten ist meiner Meinung nach wesentlich eleganter und DEUTLICH performanter. Es ist fast doppelt so schnell. Also erst testen und dann reden.
Code:
Global Const $Textinside = "qdw"
Global Const $Length = 69

$GeneratedText = ""

$tmr = TimerInit()
For $x = 0 To 10000
	For $i = 1 To $Length
		$GeneratedText &= StringMid($Textinside, Random(1, StringLen ($Textinside ) ),1 )
	Next

	$GeneratedText = ""
Next

ConsoleWrite(Round(TimerDiff($tmr) / 10000, 2) & "ms" & @CRLF)

Global Const $Textinside2[3] = ["q", "d", "w"]

$GeneratedText = ""

$tmr = TimerInit()
For $x = 0 To 10000
	For $i = 1 To $Length
		$GeneratedText &= $Textinside2[Random(0, 2, 1)]
	Next
Next

ConsoleWrite(Round(TimerDiff($tmr) / 10000, 2) & "ms" & @CRLF)
02/20/2016 13:49 Liihes#5
Quote:
Also erst testen und dann reden.
Quote:
Die Arbeit mit Arrayindices ist für mich nicht sehr praktisch und würde in meinem Falle auch (hue.) länger dauern.
Danke für den Hinweis, allerdings ist das ja auch nicht die ganze Funktion.
Für mich ist es einfach vollkommen unpraktisch. Wieso ist egal.
Greetz.
02/23/2016 17:01 lolkop#6
Quote:
Originally Posted by Liihes View Post
Danke für den Hinweis, allerdings ist das ja auch nicht die ganze Funktion.
Für mich ist es einfach vollkommen unpraktisch. Wieso ist egal.
Greetz.
Arrays sollten immer Stringfunktionen gegenüber bevorzugt werden. Es gibt kein Argument was gegen Arrays spricht.

Hast du einen kurzen oder auch sehr langen String den du verarbeiten willst, solltest du diesen immer zunächst per regulärem Ausdruck oder meinetwegen auch StringSplit in Arrays zerlegen und dann in einer Schleife verarbeiten.

Die StringMid-Funktion ist IMMER die schlechtere Wahl.
02/23/2016 17:36 Liihes#7
Hat schon nen Grund wenn ich sage das ichs nicht so will. Danke.
02/23/2016 17:50 alpines#8
Quote:
Originally Posted by Liihes View Post
Hat schon nen Grund wenn ich sage das ichs nicht so will. Danke.
Dann musst du nicht explizit danach fragen ob es besser geht wenn du es nicht besser machen willst.
02/23/2016 17:55 Devsome#9
Quote:
Originally Posted by Liihes View Post
Geht das "schöner"? Oder performanter? (Habe zwar keinerlei Probleme damit, will aber schließlich auch n paar neue Sachen dabei lernen.)
Quote:
keinerlei Probleme damit
Quote:
Originally Posted by Liihes View Post
Würde halt nur gerne wissen ob es besser geht.
Die Arbeit mit Arrayindices ist für mich nicht sehr praktisch und würde in meinem Falle auch (hue.) länger dauern.

Falls iwer Ideen/Vorschläge hat, her damit.
Quote:
Originally Posted by Liihes View Post
Wieso ist egal.
Quote:
Originally Posted by lolkop View Post
Arrays sollten immer Stringfunktionen gegenüber bevorzugt werden. Es gibt kein Argument was gegen Arrays spricht.
Quote:
Originally Posted by Liihes View Post
Hat schon nen Grund wenn ich sage das ichs nicht so will. Danke.
Ich finde es ja schön, wenn man eine Lösung schon gefunden hat, aber dennoch nach weiteren sucht um sich zu verbessern oder was zu lernen. Daumen hoch, machen nicht viele.

Wieso ist die Arbeit für dich mit Arrayindices nicht sehr praktisch ? (Vielleicht könnte man das verbessern damit dies nicht länger dauert)

Du hast nirgendwo geschrieben, dass es schon einen Grund hat sondern das du was lernen willst.

lolkop hat schon die passende Lösung geschrieben.
02/24/2016 00:51 Liihes#10
Quote:
Originally Posted by Devsome View Post
Ich finde es ja schön, wenn man eine Lösung schon gefunden hat, aber dennoch nach weiteren sucht um sich zu verbessern oder was zu lernen. Daumen hoch, machen nicht viele.

Wieso ist die Arbeit für dich mit Arrayindices nicht sehr praktisch ? (Vielleicht könnte man das verbessern damit dies nicht länger dauert)

Du hast nirgendwo geschrieben, dass es schon einen Grund hat sondern das du was lernen willst.

lolkop hat schon die passende Lösung geschrieben.
Mh ich glaube das wird sich hier nur im Kreis drehen, die Arraylösung kannte ich schon (Trotzdem vielen Dank!!!) und kann ich leider nicht gebrauchen, wieso ist zu umfangreich um es hier zu erklären.

Ich bedanke mich für alle Antworten!

Close bitte :)
03/04/2016 20:47 Lawliet#11
#closed