Skip to content

Commit 453214a

Browse files
authored
[refactor]: TemporalFilter 라인 차트 데이터 처리 성능 최적화
[refactor]: TemporalFilter 라인 차트 데이터 처리 성능 최적화
2 parents fcf0e8b + 0f660fa commit 453214a

1 file changed

Lines changed: 10 additions & 19 deletions

File tree

packages/view/src/components/TemporalFilter/TemporalFilter.tsx

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -43,31 +43,22 @@ const TemporalFilter = () => {
4343
// 메모이제이션된 필터링된 정렬 데이터 - 필터링된 데이터가 변경될 때만 재계산
4444
const sortedFilteredData = useMemo(() => sortBasedOnCommitNode(filteredData), [filteredData]);
4545

46-
// 메모이제이션된 라인 차트 데이터 - 정렬된 필터링 데이터가 변경될 때만 재계산
4746
const lineChartDataList: LineChartDatum[][] = useMemo(() => {
48-
const clocMap: Map<string, number> = new Map();
49-
const commitMap: Map<string, number> = new Map();
47+
const clocMap = new Map<string, number>();
48+
const commitMap = new Map<string, number>();
5049

51-
sortedFilteredData.forEach(({ commit }) => {
50+
for (const { commit } of sortedFilteredData) {
5251
const formattedDate = lineChartTimeFormatter(new Date(commit.commitDate));
53-
const clocMapItem = clocMap.get(formattedDate);
54-
const commitMapItem = commitMap.get(formattedDate);
55-
5652
const clocValue = commit.diffStatistics.insertions + commit.diffStatistics.deletions;
5753

58-
commitMap.set(formattedDate, commitMapItem ? commitMapItem + 1 : 1);
59-
clocMap.set(formattedDate, clocMapItem ? clocMapItem + clocValue : clocValue);
60-
});
61-
62-
const buildReturnArray = (map: Map<string, number>) =>
63-
Array.from(map.entries()).map(([key, value]) => {
64-
return {
65-
dateString: key,
66-
value: value,
67-
};
68-
});
54+
commitMap.set(formattedDate, (commitMap.get(formattedDate) || 0) + 1);
55+
clocMap.set(formattedDate, (clocMap.get(formattedDate) || 0) + clocValue);
56+
}
6957

70-
return [buildReturnArray(clocMap), buildReturnArray(commitMap)];
58+
return [
59+
Array.from(clocMap, ([dateString, value]) => ({ dateString, value })),
60+
Array.from(commitMap, ([dateString, value]) => ({ dateString, value }))
61+
];
7162
}, [sortedFilteredData]);
7263

7364
const windowSize = useWindowResize();

0 commit comments

Comments
 (0)