2010-07-28 31 views
5

Tôi đã thấy điểm chuẩn của việc triển khai mô hình diễn viên được thực hiện theo các diễn viên của họ. Ví dụ, diễn viên Akka rất nhẹ (600 byte cho mỗi diễn viên) và hàng triệu người trong số họ có thể được tạo ra. Tuy nhiên, tôi chưa bao giờ thấy điểm chuẩn được thực hiện theo thông lượng truyền thông điệp.Hiệu suất truyền thông điệp trong mô hình diễn viên

Ví dụ: với một số diễn viên, có bao nhiêu thư có thể chuyển giữa chúng trong một giây?

Có ai có liên kết đến điểm chuẩn hiệu suất như vậy (về mặt thông lượng chuyển thông điệp) không?

Trả lời

0

Khi tôi chạy thử nghiệm hiệu suất với diễn viên đơn giản này được xây dựng xung quanh việc triển khai mô hình của tôi, nó có thông báo 444773.906 mỗi giây. Rõ ràng nó là một thử nghiệm contrived nhưng nó cung cấp cho bạn một ý tưởng chung về cách nó có thể thực hiện trong tự nhiên.

private class TestActor : Actor<int, bool> 
{ 
    protected override void ProcessMessage(AsyncReplyPackage<int, bool> package) 
    { 
     package.ReplyChannel.Send(package.Message > 2000000); 
    } 
} 

static void Main(string[] args) 
{ 
    var r = false; 
    using (var ts = new TestActor()) 
    using (var rc = new AsyncChannel<bool>()) 
    { 
     ts.PostWithAsyncReply(0, rc); 
     r = rc.Receive(); 

     var count = 3000000; 
     var sw = Stopwatch.StartNew(); 
     for (int i = 0; i < count; i++) 
     { 
      ts.PostWithAsyncReply(i, rc); 
      r = rc.Receive(); 
     } 
     Console.WriteLine(sw.Elapsed); 
    } 
    Console.WriteLine(r); 
    Console.ReadLine();   
} 

Kích

tôi nổ ra các hồ sơ và có vẻ như thực hiện của tôi là 944 byte. :(

+0

Tôi nghĩ câu hỏi này vẫn rất inte nghỉ ngơi. Nếu ai đó có thứ gì đó để đóng góp ... hoặc nếu có bất kỳ công cụ nào để theo dõi scala, hiệu suất akka. – jimakos17

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