저는 C++ Windows 응용 프로그램에서 작업 중이며 상관 기능을 추가해야합니다. 현재 두 개의 이벤트 프로듀서가 있으며 각 프로듀서는 비슷한 이벤트를 생성합니다. 이벤트 생성의 평균 결합 속도는 두 제작자 모두에서 2k/초입니다. 그러나 부하가 걸리면 300-500 k/sec로 점프합니다. 이 이벤트의 단순화 된 버전으로 (이벤트를 효율적으로 연관 시키십시오.
Event
ProcessId // e.g. 1234
Action // e.g. 0, 1, 2
Timestamp // e.g. LARGE_INTEGER Windows timestamp
같은 ProcessId를을 나는 약
- 해시 맵을 생각이
Filter // events are from the same process ev1.ProcessId == ev2.ProcessId && // events have specific types (ev1.Action == 0 && ev2.Action == 1) && // they are less than 2 secs apart (abs(ev1.Timestamp - ev2.Timestamp) < 2 seconds)
같은 외모를 구축 할 필요가 상관 관계 규칙을 보는 방법입니다 키) 대기열 포함 (시간 및 동작 상관 관계)
- 부스트 파이프 라인 (예 : github)
그러나 CPU 및 메모리 사용률을 낮게 유지해야하므로 빠른 이벤트 축출을 처리하는 방법을 잘 모르겠습니다.
누구든지 이벤트를 효율적으로 상관시킬 수있는 솔루션을 제안하십시오 (CPU 영향 최소화 및 메모리 사용 공간 최소화)?
생성되는 이벤트의 양과 이벤트의 일부 특성 간의 상관 관계를 찾고 있습니까? 샘플링 및 추정이 허용되는지 또는 상관 관계의 정확한 측정이 필요한가? – Dave
그것은 이벤트의 특징입니다 : 논쟁의 여지가 많은 이벤트에서 나는 필자의 필터와 일치하는 이벤트를 찾아야합니다. 어쩌면 단어 "상관 관계"가 정확히 여기에 있지 않을 수도 있습니다. 샘플링/추정은 중요한 데이터를 놓칠 수있는 오류를 유발할 수 있지만, 중복 된 이벤트가 많아지기 때문에 중복 제거 이벤트를 필터링 할 수 있다고 생각합니다. – oleksii