2013-04-12 2 views
0

두 개의 C 응용 프로그램이 있는데 둘 다 Windows XP의 동일한 시스템에서 실행됩니다. 이 스레드의 데이터를 기반으로 : Sockets On Same Machine For Windows and Linux이 연결에서 매우 빠른 속도를보아야합니다. 그러나 500mbit/s 이상을 전송할 수는 없습니다. 127.0.0.1을 IP-Adress와 nodelay 옵션으로 사용합니다. 하나의 메시지가 약 3.5mbyte이고 초당 30 개까지 메시지를 보내야합니다. 가능성이 없다면 어떻게 든 메시지를 압축해야하지만 CPU로드가 엄청나게 커집니다. 아이디어가 있으십니까?로컬 호스트의 TCP/IP가 느림

+1

CPU, RAM 및 데이터 소스에 관해 언급하지 않았습니다. –

답변

0

전송할 버퍼의 크기는 성능에 큰 영향을 줄 수 있습니다. 예를 들어, 작은 버퍼를 사용하는 경우 하나만 필요하면 값 비싼 많은 작업을 수행하게됩니다.

1492 바이트의 쓰기도 권장합니다. 보통 1492 바이트 크기의 TCP를 처리하는 것이 좋습니다. 다른 값으로 재생하면 더 나은 성능을 얻을 수 있는지 확인할 수 있습니다.

+0

전체 데이터를 한 번에 쓸 수 있으므로 약 3.5MByte가됩니다. 이 메시지를 처리하기 위해 공유 메모리를 구현 중이므로 문제가 해결 될 것입니다. – user2274172

+0

음, 3.5MB를로드하는 것이 좋은 습관이라고 말하지 않습니다. 로딩이 큰 오버 헤드를 일으킬 것이라고는 생각하지 않습니다. 그럼에도 불구하고 작은 버퍼를 시도 할 수는 있습니다. 그런 식으로 보내기 전에 초기 로딩 오버 헤드가 없습니다. 블로킹이 아닌 쓰기를 수행하는 것이 더 좋습니다. – pmoleri