C Python Network Performance

GM M gmm2064 at yahoo.com
Wed Jul 11 22:36:39 CEST 2007


I am writing an application bulk of which is sending and receving UDP data. I was evaluating which language will be a better fit for the job. I wrote following small pieces of code in Python and C respectively:

from socket import *
import sys

if __name__ == '__main__':
    s = socket(AF_INET, SOCK_DGRAM)
    while True:
        s.sendto("hello", (sys.argv[1], int(sys.argv[2])))

#include <sys/socket.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <string.h>
#include <netinet/in.h>

#define true 1
#define false 0

int main(int len, char** args){
  int s = socket(AF_INET, SOCK_DGRAM, 0);
  struct sockaddr_in s_addr;
  inet_pton(AF_INET, args[1], &(s_addr.sin_addr));
  printf("%s:%s\n", args[1], args[2]);
  in_port_t port;
  sscanf(args[2], "%u", &port);
  s_addr.sin_port = htons(port);
  s_addr.sin_family = AF_INET;
  char* msg = "hello";
  int msg_len = 6;
  int addr_len = sizeof(struct sockaddr);
  struct sockaddr* s_g_addr = (struct sockaddr*) &s_addr;
    int success = sendto(s, msg, msg_len, 0, s_g_addr, addr_len);


Both pieces of code, take IP address and port on command line initely send UDP messages to the target. In this experiment target is another machine of mine and I record the data rate received at that machine. I was surpirised to see that python code was able to achieve 4-10 times higher data rate than C. I was expecting C code to perform the same, if not better.

Can anyone please explain why this is the case?


Ghulam Memon

Building a website is a piece of cake. 
Yahoo! Small Business gives you all the tools to get online.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20070711/6e83ab91/attachment.html>

More information about the Python-list mailing list