코드 변경사항 확인
기존 코드와 수정된 코드를 비교하여 어떤 줄이 추가/삭제되었는지 확인합니다.
Diff 비교기로 변경사항을 시각적으로 파악하여 코드 리뷰 효율을 높일 수 있습니다.
두 텍스트를 라인별로 비교하여 차이점을 하이라이트합니다.
추가 2줄, 삭제 2줄, 동일 2줄
텍스트 Diff 비교기는 두 텍스트를 라인 단위로 비교하여 추가/삭제/변경된 부분을 시각적으로 하이라이트합니다. LCS(Longest Common Subsequence) 알고리즘을 사용하여 정확한 차이를 감지합니다. 코드 리뷰, 문서 수정 확인, 번역본 비교 등에서 두 텍스트의 차이점을 빠르게 파악할 수 있습니다.
이럴 때 이렇게 계산해요.
기존 코드와 수정된 코드를 비교하여 어떤 줄이 추가/삭제되었는지 확인합니다.
Diff 비교기로 변경사항을 시각적으로 파악하여 코드 리뷰 효율을 높일 수 있습니다.
계약서나 정책 문서의 이전 버전과 최신 버전을 비교하여 수정된 조항을 빠르게 파악합니다. 수백 줄의 문서에서 변경된 부분만 하이라이트로 확인합니다.
문서 전체를 다시 읽지 않아도 변경된 부분만 집중적으로 검토할 수 있습니다.
같은 원문의 두 가지 번역본을 비교하여 표현 차이를 분석합니다. 어떤 문장이 다르게 번역되었는지 줄 단위로 확인합니다.
번역 품질 검수 시 두 번역본의 차이점을 빠르게 파악하여 최적의 번역을 선택할 수 있습니다.
서버 설정 파일(nginx.conf, .env 등)의 변경 전후를 비교하여 어떤 설정값이 추가/변경/삭제되었는지 확인합니다.
설정 변경으로 인한 장애 원인을 빠르게 파악하고 복구할 수 있습니다.
최적화 전후의 SQL 쿼리를 비교하여 JOIN 조건, WHERE 절, 인덱스 힌트 등의 변경사항을 확인합니다.
쿼리 최적화 과정에서 변경 사항을 명확히 추적하여 성능 개선 효과를 분석할 수 있습니다.
같이 쓰면 좋아요. 옆으로 넘겨 보세요.
궁금한 거 모아 봤어요. 눌러서 펼쳐 보세요.
LCS(최장 공통 부분수열) 알고리즘으로 두 텍스트에서 공통되는 가장 긴 부분을 찾고, 나머지를 추가 또는 삭제로 분류합니다. Git의 diff 기능과 동일한 원리입니다.
성능을 위해 각 텍스트는 1,000줄까지 비교합니다. 일반적인 코드 파일이나 문서 비교에 충분한 용량입니다.
줄 단위 비교는 한 줄 전체를 변경 단위로 봅니다. 한 글자만 바뀌어도 해당 줄 전체가 변경으로 표시됩니다. 문자 단위 비교는 줄 내에서 바뀐 문자만 정확히 표시하지만, 처리 시간이 더 오래 걸립니다.
코드 비교 시 들여쓰기 변경이나 빈 줄 추가/삭제는 의미 없는 차이인 경우가 많습니다. 이러한 경우 비교 전에 양쪽 텍스트의 공백을 정규화하면 의미 있는 변경점만 확인할 수 있습니다.
Git diff는 파일 시스템의 버전 간 차이를 보여주는 명령어이고, 이 도구는 임의의 두 텍스트를 직접 붙여넣기하여 비교합니다. Git을 사용하지 않는 환경이나 간단한 텍스트 비교에 유용합니다.
변경 전후 컨텍스트를 함께 보여주는 diff 출력 형식입니다. +로 추가된 줄, -로 삭제된 줄을 표시하며, @@ 기호로 변경 위치를 나타냅니다. 패치 파일과 코드 리뷰에서 널리 사용됩니다.
텍스트 Diff의 핵심은 LCS(Longest Common Subsequence, 최장 공통 부분수열) 알고리즘입니다. 두 수열 X(길이 m)와 Y(길이 n)가 주어졌을 때, 양쪽에 공통으로 포함되면서 순서가 유지되는 가장 긴 부분수열을 찾습니다. 이 문제는 동적 프로그래밍(DP)으로 O(mn) 시간과 공간에 해결됩니다.
DP 테이블 L[i][j]는 X의 처음 i개 원소와 Y의 처음 j개 원소의 LCS 길이를 저장합니다. X[i]=Y[j]이면 L[i][j] = L[i-1][j-1] + 1, 다르면 L[i][j] = max(L[i-1][j], L[i][j-1])입니다. 테이블을 역추적하여 실제 LCS를 복원하고, LCS에 포함되지 않는 원소를 추가(+) 또는 삭제(-)로 분류합니다.
Myers의 diff 알고리즘(1986)은 편집 거리(edit distance)를 최소화하는 최단 편집 스크립트를 O(ND) 시간에 찾습니다. N은 두 텍스트의 총 길이, D는 차이(편집 거리)입니다. 대부분의 실제 텍스트는 차이가 적으므로(D << N), 이 알고리즘은 실무에서 매우 빠르게 동작합니다. Git의 diff도 이 알고리즘을 기반으로 합니다.