Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用相同的库API时Rabbitmq的性能非常不同(python3与dotnet)_C#_Python 3.x_Performance_Rabbitmq_Benchmarking - Fatal编程技术网

C# 使用相同的库API时Rabbitmq的性能非常不同(python3与dotnet)

C# 使用相同的库API时Rabbitmq的性能非常不同(python3与dotnet),c#,python-3.x,performance,rabbitmq,benchmarking,C#,Python 3.x,Performance,Rabbitmq,Benchmarking,我一直在试图找出使用rabbitmq python库(pika/aiopika)的最佳方式,同时我注意到,当我使用dotnet库(rabbitmq.Client)做同样的事情时,我得到了非常不同的结果 python: import pika connection = pika.BlockingConnection(pika.ConnectionParameters('localhost')) channel = connection.channel() exchange_name = "test

我一直在试图找出使用rabbitmq python库(pika/aiopika)的最佳方式,同时我注意到,当我使用dotnet库(rabbitmq.Client)做同样的事情时,我得到了非常不同的结果

python:

import pika
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
exchange_name = "test-load"
channel.exchange_declare(exchange_name, exchange_type="topic", durable=True)
msg = 'WhySoSLow?'
while True:
    channel.basic_publish(exchange=exchange_name,routing_key="random", body=msg)
这让我得到了11K msg/s的结果,CPU使用率为100%

对于网络:

using RabbitMQ.Client;

var factory = new ConnectionFactory() { HostName = "localhost" };
using(var connection = factory.CreateConnection())
using(var channel = connection.CreateModel())
{
    channel.ExchangeDeclare(exchange: "test-load", durable: true, type: "topic");

    var routingKey = "random";
    var message = "WhySoSLow?";

    var body = Encoding.UTF8.GetBytes(message);
    while(true) 
    {
        channel.BasicPublish(   exchange: "test-load", 
                                routingKey: routingKey,
                                basicProperties: null,
                                body: body);

    }
}
此代码生成的结果为100K msg/s,CPU使用率为30%


我做错了什么?

不同语言的性能不同。C++的速度更快。

C#在编译和运行时都有更多的优化,而pyton必须始终处理装箱和取消装箱


也许你可以从其中一个获得一些优化的想法,但我怀疑你使用的库

我是Pika的维护者。这个库的开发(目前)不是为了性能,而是为了正确性。如果您有时间进行一些分析并找出这些性能差异存在的原因,那就太好了。请跟踪邮件列表-