2013-10-31 18 views
5

Tôi đang tập hợp một thí nghiệm NLP trong đó khái niệm là các tác nhân trong một hệ thống được thiết kế để tạo các thuộc tính khẩn cấp bao gồm các khái niệm mới (here's a link cho những người không biết những gì đang nổi lên). Smalltalk (đặc biệt là phương ngữ Pharo) có vẻ lý tưởng cho loại ứng dụng này vì sự dễ dàng mà tôi có thể tạo ra các đối tượng khái niệm được đóng gói hoàn toàn có liên quan với nhau như một tác nhân độc lập, và thực tế là SmallTalk cho phép tôi kiểm tra trạng thái của hệ thống khi nó đang chạy.Có giới hạn trên đối với số đối tượng trong hình ảnh Smalltalk không?

Quan ngại của tôi là liệu hệ thống có bắt đầu bị sặc nếu có quá nhiều đối tượng và tất cả gửi tin nhắn với nhau hay không. Về mặt lý thuyết, việc triển khai của tôi có thể tạo ra hàng triệu đối tượng khái niệm và tôi không muốn dành thời gian làm việc trong SmallTalk nếu hệ thống không thể xử lý thứ gì đó lớn như vậy.

  1. Có yếu tố hạn chế (yếu tố phần mềm, không phải phần cứng) về số lượng đối tượng đang hoạt động trong hình ảnh SmallTalk không?

  2. Hệ thống có thể xử lý lưu lượng tin nhắn sẽ có mặt trong một hệ thống có hàng triệu đối tượng trò chuyện không?

Cảm ơn bạn đã trợ giúp!

Trả lời

2

Kích thước làm việc bên trong của con trỏ đối tượng trong Pharo vẫn là 32 bit tôi tin. Đã có nhiều phiên bản 64b, nhưng có một điều cần có một máy ảo 32b chạy trên một máy 64b, và một thứ khác để có một thực tế, 64b qua và thông qua VM.

Vì vậy, có giới hạn tiềm ẩn ngay tại đó, nhưng vẫn còn chỗ cho "hàng triệu" đối tượng. Bắt đầu tiếp cận với "100 triệu" và bạn cũng có thể gặp phải một số giới hạn.

Có hàng triệu đối tượng cuối cùng không thực sự là vấn đề, bây giờ nó chuyển sang luồng kiểm soát và Pharo không thực hiện nhiều luồng trong trường hợp đó. Vì vậy, nó thực sự đến như thế nào để có bao nhiêu bối cảnh khác biệt thực tế bạn sẽ có, không nhất thiết phải đối tượng cho mỗi se.

Có một chuỗi các đối tượng nói chuyện với nhau không thực sự là vấn đề lớn, bạn chỉ cần chạy vào bất kỳ thông điệp nào vượt qua trên máy ảo bên dưới để hạn chế hiệu suất thô. Pharo là khá nhanh, nhưng nó không phải là Java nhanh. Cho dù đó là đủ nhanh cho bạn là dành cho bạn để trả lời.Tôi cũng không thể nói được rằng Pharo GC xử lý hàng triệu đối tượng trực tiếp như thế nào, tôi chỉ có thể đề nghị là năm 2013, Squeak (dựa trên nền tảng Pharo) đã có từ khoảng giữa thập niên 90, công nghệ GC khá là đẹp bây giờ trưởng thành hơn nhiều, và tôi không nghi ngờ rằng GC của Pharo là đáng sợ khủng khiếp trong vấn đề này.

Tôi chỉ cần làm một số tiêu chuẩn vi mô và tự mình thử.

+0

w00t - t/y để trả lời nhanh! –

3

Về 1: Số lượng đối tượng bị giới hạn bởi không gian địa chỉ ảo có sẵn cho máy ảo - trong đó, với các bản dựng chuẩn, chỉ có vài trăm MB lớn. Hình ảnh Squeak hiện tại của tôi chứa hơn 3,5 triệu bản sao của Object ở trạng thái không hoạt động - điều này sẽ cho bạn ấn tượng về những gì có thể.

Về 2: Hình ảnh Squeak của tôi thực hiện khoảng 26 triệu tin nhắn gửi mỗi giây trên Intel Core i7 2620M không được cập nhật của tôi (nhưng chỉ sử dụng một lõi).

Tuy nhiên, tôi nghi ngờ rằng bạn sẽ hài lòng với kết quả của phương pháp hiện tại của bạn. Bạn đã nói về việc kiểm tra trạng thái của hệ thống - điều thực sự hoàn toàn tuyệt vời trong Squeak/Pharo - nhưng bạn không thể (bằng tay) kiểm tra trạng thái của hàng triệu đối tượng. Nhưng sau đó một lần nữa, tôi không biết chính xác những gì bạn đang làm;)

+0

t/y cũng như để thực hiện điều này một cách nhanh chóng! FYI- Tôi không tìm cách kiểm tra tất cả các đối tượng cùng một lúc - nhưng tôi cần kiểm tra cấu trúc khái niệm (khái niệm có thể tự tái tạo, tạo ra các biểu mẫu phức tạp hơn mà chúng vẫn được kết nối) để xem những gì đang được tạo, cách nó đang được tạo ra và những gì khiến nó được tạo ra. Vì vậy, miễn là tôi có thể làm điều đó, tôi là gtg. –

Các vấn đề liên quan