2013-10-31 4 views
5

Ich stelle ein NLP-Experiment zusammen, in dem Konzepte Agenten in einem System sind, das entwickelt wurde, um Emergent-Eigenschaften zu erzeugen, die aus neuen Konzepten bestehen (here's a link für diejenigen, die nicht wissen, was Emergenz ist). Smalltalk (speziell der Pharo-Dialekt) scheint für diese Art von Anwendung ideal zu sein, weil ich völlig verkapselte Konzeptobjekte erstellen kann, die sich als unabhängige Agenten zueinander verhalten, und die Tatsache, dass SmallTalk es mir erlaubt, die Zustand des Systems, während es läuft.Gibt es eine Obergrenze für die Anzahl der Objekte in einem Smalltalk-Bild?

Meine Sorge ist, ob das System zu ersticken beginnt, wenn zu viele Objekte vorhanden sind und alle Nachrichten einander senden. Theoretisch könnte meine Implementierung Millionen von Konzeptobjekten erzeugen, und ich möchte nicht die Zeit darauf verwenden, diese in SmallTalk auszuarbeiten, wenn das System mit etwas so Großem nicht umgehen kann.

  1. gibt es limitierende Faktoren (Software-Faktoren, nicht Hardware) in Bezug auf die Menge der aktiven Objekte in einem SmallTalk Bild?

  2. Kann das System den Nachrichtenverkehr verarbeiten, der in einem System mit Millionen gesprächiger Objekte vorhanden wäre? ?

Vielen Dank im Voraus für Ihre Hilfe!

Antwort

2

Die interne Arbeitsgröße von Objektzeigern in Pharo ist immer noch 32 Bit glaube ich. Es gab ein Geschwätz von 64-Bit-Versionen, aber es ist eine Sache, dass eine 32-Bit-VM auf einer 64-Bit-Maschine ausgeführt wird, und eine andere Sache, eine echte 64-Bit-VM zu haben.

Es gibt also ein implizites Limit, aber immer noch Platz für "Millionen" von Objekten. Fangen Sie an, in die "100 Millionen von Millionen" zu kommen, und Sie stoßen möglicherweise an einige Grenzen.

Mit Millionen von Objekten am Ende ist nicht wirklich ein Problem, jetzt bewegt es sich zu Threads der Kontrolle, und Pharo macht nicht viel Threading in diesem Fall. Es kommt also wirklich darauf an, wie viele tatsächliche unterschiedliche Kontexte Sie haben werden, nicht notwendigerweise Objekte an sich.

Eine Kette von Millionen von Objekten, die miteinander kommunizieren, ist nicht wirklich eine große Sache, Sie werden einfach in jede Nachricht einsteigen, die in der zugrundeliegenden VM Overhead gibt, um die rohe Leistung zu begrenzen. Pharo ist ziemlich schnell, aber es ist nicht schnell Java. Ob es schnell genug für dich ist, musst du beantworten.

Ich kann auch nicht sagen, wie gut der Pharo GC Millionen von Live-Objekten handhabt, ich kann nur vorschlagen, dass es 2013 ist, Squeak (auf dem Pharo basiert) gibt es seit Mitte der 90er Jahre, GC Tech ist hübsch jetzt sehr reif, und ich vermute nicht, dass Pharos GC in dieser Hinsicht spektakulär schrecklich ist.

Ich würde einfach einige Mikro-Benchmarks und versuchen Sie es selbst.

+0

w00t - t/y für die schnelle Antwort! –

3

In Bezug auf 1: Die Anzahl der Objekte wird durch den virtuellen Adressraum begrenzt, der für die VM verfügbar ist - die mit den Standard-Builds nur einige hundert MB groß ist. Mein aktuelles Squeak-Bild enthält über 3,5 Millionen Instanzen von Object im Ruhezustand - was Ihnen einen Eindruck davon geben sollte, was möglich ist.

In Bezug auf 2: My Squeak Bild führt auf meinem nicht so aktuellen Intel Core i7 2620M bei etwa 26 Millionen Nachrichtenübertragungen pro Sekunde aus (verwendet aber natürlich nur einen Kern).

Allerdings bezweifle ich, dass Sie mit dem Ergebnis Ihrer derzeitigen Vorgehensweise zufrieden sein werden. Sie haben darüber gesprochen, den Zustand des Systems zu überprüfen - was bei Squeak/Pharo wirklich großartig ist -, aber Sie können den Zustand von Millionen von Objekten nicht (manuell) überprüfen. Aber dann wieder, ich weiß nicht genau, was Sie vorhaben;)

+0

t/y auch für das Springen so schnell! Zu Ihrer Information: Ich möchte nicht alle Objekte gleichzeitig untersuchen. Aber ich muss die Konzeptstrukturen untersuchen (Konzepte können sich selbst replizieren und komplexere Formen erzeugen, mit denen sie immer noch verbunden sind), um zu sehen, was und wie gemacht wird Es wird gemacht und was es verursacht hat. Solange ich das kann, bin ich gtg. –

Verwandte Themen