2012-08-09 3 views
2

100Mbps의 입력 데이터 스트림이있는 프로젝트에서 작업 중입니다.프로그램이 1Mbps 속도로만 데이터를 처리 할 수있을 때 100Mbps 입력 스트림을 처리하는 방법

내 프로그램은 이러한 데이터를 캡처하는 데 밤새 사용할 수 있으므로 거대한 데이터 파일을 생성합니다. 이러한 데이터를 해석하는 프로그램 논리는 복잡하며 초당 1MB의 데이터 만 처리 할 수 ​​있습니다.

또한 처리가 끝나면 일부 로그 파일에 바이트를 덤프합니다. 우리는 들어오는 데이터를 풀고 동시에 내 프로그램이 실시간으로 작동되기를 원하지 않습니다. 우리는 캐시처럼 작동하는 순환 버퍼를 유지 관리합니다.

지금 들어오는 데이터를 손실하는 것을 막는 유일한 방법은이 버퍼의 크기를 늘리는 것입니다.

이 작업을 수행하는 더 좋은 방법을 제안하고 시도 할 수있는 캐싱의 다른 방법은 무엇입니까?

+0

100Mbps (초당 100 밀리 비트)가 아닌 100Mbps (초당 100 메가 비트)라고 가정합니까? –

+0

@Paul 예. 초당 100 메가 비트입니다. 질문을 수정했습니다. – learningstack

답변

3

파일에 입력을 스트리밍합니다. 정말로, 다른 선택의 여지가 없습니다. 그것은 당신이 처리 할 수있는 것보다 더 빨리옵니다.

입력 데이터 초당 하나의 파일을 만들 수 있습니다. 이렇게하면 새 파일이 디스크에서 스트리밍되는 동안 이전 파일 처리를 직접 시작할 수 있습니다.

+0

은 (는) 버퍼를 좋아합니까? 멀티 스레딩? –

+0

@ tuğrulbüyükışık, 그것은 말이 될 것입니다. OP는 데이터 볼륨이 크기 때문에 디스크에 스트리밍해야합니다. – usr

+0

파일이 성능을 저하시킬 것이라고 생각합니다. 그래서; 나는 캐싱을 사용하여 그것을 처리하고 싶다. 우리가 지속적으로 동일한 속도로 데이터를받는다면 들어오는 데이터가 손실된다는 것을 안다. 그러나 들어오는 데이터 속도가이 높은 spped에서 일관되게 발생하지 않을 가능성이 있습니다. – learningstack

관련 문제