Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
...
Was kann in einer Tabelle mit 1000 Zeilen durch Blättern mit dem Auge gefunden werden? Welches Problem wird gelöst?
P.S. Schon wieder Offtopic...
Andrew, die Aufgabe bestand darin, dem Benutzer die Möglichkeit zu geben, eine beliebige Tabelle zu erstellen. Wie in Sharp. Man weiß nie, was er vorhat...)).
Ich schlage vor, dass wir das Offtopic beenden)).
Fairerweise muss gesagt werden, dass nur der sichtbare Teil der Tabelle neu gezeichnet werden kann und der unsichtbare Teil nur bei einem Bildlaufereignis neu gezeichnet wird. Aber wie gesagt, das war ein Stresstest.
Es kommt darauf an, wie genau sich die Werte in der Tabelle verändern. Wenn sich die Werte sehr schnell und ständig ändern, ist es besser, nur den sichtbaren Bereich neu zu zeichnen und den unsichtbaren beim Scrollen neu zu zeichnen. Wenn sich die Werte nur selten ändern, ist es besser, alles auf einmal neu zu zeichnen, so dass beim Start des Bildlaufs keine Verzögerung durch das Neuzeichnen entsteht. Da man nie genau weiß, wie oft sich die Werte in der Tabelle ändern, habe ich mich für eine universelle Methode entschieden - alles auf einmal neu zu zeichnen. Es gibt nicht allzu viele Tabellen, in denen die Werte wie verrückt hin und her springen, daher ist es besser, sie alle auf einmal neu zu zeichnen. Es ist also besser, die gesamte Leinwand auf einmal neu zu zeichnen und die Verzögerung zu Beginn des Bildlaufs zu umgehen.
SZY: Haben Sie gesehen, wie lange es dauert, eine Leinwand mit 900*7000 Pixeln neu zu zeichnen? Selbst mit MT5 kann diese Verzögerung Hunderte von Millisekunden betragen. Es ist sehr unangenehm, eine solche Verzögerung zu erleben, wenn man mit dem Scrollen beginnt. Wenn die Häufigkeit des Neuzeichnens gering ist, ist es daher besser, alles auf einmal zu zeichnen.
Um zum Thema zurückzukommen - dies ist einer der Gründe für die Notwendigkeit von Multi-Threading in MT5)!
Eine letzte Sache. Um das Problem der Prozessorüberlastung zu vermeiden, wenn große Tabellen zu oft neu gezeichnet werden, habe ich einen anderen Weg gewählt. Ich habe einen speziellen Regler gebaut, um die Geschwindigkeit der Wertänderung einzustellen. Das heißt, die Werte ändern sich schnell, aber der Benutzer reguliert die Geschwindigkeit ihrer Ausgabe (Neuzeichnen) mit einem Schieberegler (ich habe es gezeigt). Dadurch wird der Prozessor zeitweise entlastet und der Benutzer kann die Informationen in der Tabelle bequemer wahrnehmen.
Andrei, die Aufgabe bestand darin, dem Benutzer die Möglichkeit zu geben, eine beliebige Tabelle zu erstellen. Genau wie in Sharp. Man weiß nie, was er sich in den Kopf setzt...))
Ich schlage vor, das Offtopic zu beenden)).
Um fair zu sein, können Sie nur den sichtbaren Teil der Tabelle neu zeichnen, den unsichtbaren Teil können Sie nur bei einem Bildlaufereignis neu zeichnen. Aber wie gesagt, es war ein Stresstest.
SZY: Es kommt darauf an, wie genau sich die Werte in der Tabelle ändern. Wenn sich die Werte sehr schnell und ständig ändern, ist es besser, nur den sichtbaren Bereich neu zu zeichnen und den unsichtbaren beim Scrollen neu zu zeichnen. Wenn sich die Werte nur selten ändern, ist es besser, alles auf einmal neu zu zeichnen, so dass beim Start des Bildlaufs keine Verzögerung durch das Neuzeichnen entsteht. Da man nie genau weiß, wie oft sich die Werte in der Tabelle ändern, habe ich mich für eine universelle Methode entschieden - alles auf einmal neu zu zeichnen. Es gibt nicht allzu viele Tabellen, in denen die Werte wie verrückt hin und her springen, daher ist es besser, sie alle auf einmal neu zu zeichnen. Es ist also besser, die gesamte Leinwand auf einmal neu zu zeichnen und die Verzögerung zu Beginn des Bildlaufs zu umgehen.
SZY: Haben Sie gesehen, wie lange es dauert, eine Leinwand mit 900*7000 Pixeln neu zu zeichnen? Selbst mit MT5 kann diese Verzögerung Hunderte von Millisekunden betragen. Es ist sehr unangenehm, eine solche Verzögerung zu erleben, wenn man mit dem Scrollen beginnt. Wenn die Häufigkeit des Neuzeichnens gering ist, ist es daher besser, alles auf einmal zu zeichnen.
Um auf das Thema zurückzukommen - dies ist einer der Gründe für die Notwendigkeit von Multithreading im MT5).
Eine letzte Sache. Um das Problem der Prozessorüberlastung zu vermeiden, wenn große Tabellen zu oft neu gezeichnet werden, habe ich einen anderen Weg gewählt. Ich habe einen speziellen Regler gebaut, um die Geschwindigkeit der Wertänderung einzustellen. Das heißt, die Werte ändern sich schnell, aber der Benutzer reguliert die Geschwindigkeit ihrer Ausgabe (Neuzeichnen) mit einem Schieberegler (ich habe es gezeigt). Dadurch wird der Prozessor zeitweise entlastet und der Benutzer kann die Informationen in der Tabelle bequemer wahrnehmen.
Peter, kennen Sie den Unterschied zwischen Asynchronität, Multithreading und Parallelität?
Peter, kennen Sie den Unterschied zwischen Asynchronität, Multithreading und Parallelität?
Ich schlage vor, im gleichen Thread ein Beispiel für einen asynchronen oder parallelen Betrieb zu geben.
OK, los geht's!
OK, los geht's!
OK, los geht's!
Einhändiges Klatschen? Zen nach außen ist nicht Zen :-)
Sie wissen ganz genau, dass Peter sich aus dem Sandkasten heraushält. Im Grunde kann er die Begriffe nicht verstehen.
Was bringt es, solche Fragen zu stellen? Nun, er wird anfangen zu plappern wie ein professioneller Reporter.
eine Hand klatschen ? zen nach außen ist nicht zen :-)
Sie wissen ganz genau, dass Peter sich aus dem Sandkasten heraushält. Im Grunde kann er die Begriffe nicht verstehen.
Was bringt es, solche Fragen zu stellen? Nun, er wird anfangen zu plappern wie ein professioneller Reporter.
Nun, Leute, das ist elementare Logik. Nun, wie kann ein Thread etwas asynchron tun, indem er eine einzelne Sequenz von Operationen überspringt? Der einzige Weg ist, sich im Kreis zu bewegen und bei jeder Iteration eine Entscheidung zu treffen, welche Operationen durchgeführt und welche verschoben werden sollen. Aber ist das eine normale Asynchronität? Wir sollten überhaupt nicht von Parallelität sprechen. Welche Art von Parallelität können wir in einem Thread haben? ))
Zwei bzw. zweiundzwanzig Threads können entweder synchron oder asynchron sein. Ein einzelner Thread kann sowohl synchrone als auch asynchrone Operationen umfassen. Sie haben angegeben, wie. Parallel weiß nicht, wie man die parallelen einbeziehen kann.
Leute, das ist elementare Logik. Nun, wie kann man etwas asynchron in einem Thread machen, der über eine einzelne Sequenz von Aktionen springt? Die einzige Möglichkeit besteht darin, sich im Kreis zu bewegen und bei jeder Iteration eine Entscheidung zu treffen, welche Operationen durchgeführt und welche verschoben werden sollen. Aber ist das eine normale Asynchronität? Wir sollten überhaupt nicht von Parallelität sprechen. Welche Art von Parallelität können wir in einem Thread haben? ))
Ein asynchroner Aufruf erzeugt nicht unbedingt einen neuen Thread