C / Python套接字性能?

时间:2009-12-15 18:39:23

标签: python c sockets scapy

我的问题只涉及C语言和Python中的套接字之间的性能差异。由于我的Python构建是CPython,我认为它是相似的,但我很好奇是否有人实际上有“真正的”基准,或者至少是一个基于证据的观点。

我的逻辑是这样的:

  • C socket快得多?然后写一个C. 延期。
  • 不是/几乎没有区别? 继续用Python编写并弄清楚 如何获得包级别控制 (scapy?dpkt?)

我确信有人会想知道上下文或好奇心。我计划为自己构建一种代理(不用于互联网浏览,匿名等),并将我想要使用的应用程序绑定到特定端口。然后,所述端口上的所有数据包将排队,修改地址头,然后发送等等。

提前致谢。

2 个答案:

答案 0 :(得分:12)

通常,Python中的套接字执行得很好。例如,BitTorrent跟踪器服务器的参考实现是用Python编写的。

进行网络操作时,网络速度通常是限制因素。也就是说,C和Python的套接字代码之间的任何可能的微小差异都完全被你正在做某种网络的事实所掩盖。

但是,您对要执行的操作的说明表明您要检查和修改单个IP 数据包。这超出了Python标准网络库的功能,并且在任何情况下都是依赖于操作系统的操作。而不是问“哪个更快?”你需要先问“这可能吗?”

答案 1 :(得分:1)

我认为C会更快,但python会更容易管理和使用。

差异会很小,你不需要它,除非你试图发送大量的数据(愚蠢的东西,如100万gb /秒大声笑)