Diff
checker
텍스트
텍스트
이미지
문서
Excel
폴더
Legal
Enterprise
데스크톱
요금제
로그인
데스크톱 앱 다운로드
텍스트 비교
두 텍스트 파일의 차이점을 찾아보세요
도구
기록
실시간 편집
변경 없는 행 숨기기
줄바꿈 비활성화
레이아웃
나란히 보기
합쳐 보기
비교 단위
스마트
단어
글자
구문 강조
언어 선택
제외
텍스트 변환
첫 변경으로
수정
Diffchecker Desktop
가장 안전하게 Diffchecker를 사용하는 방법. 데스크톱 앱을 사용하면 비교 데이터가 외부로 전송되지 않습니다!
데스크톱 앱 받기
Untitled diff
생성일
8년 전
비교 결과 만료 없음
초기화
내보내기
공유
설명
3 삭제
행
총
삭제
글자
총
삭제
이 기능을 계속 사용하려면 업그레이드해 주세요
Diff
checker
Pro
요금제 보기
64 행
복사
17 추가
행
총
추가
글자
총
추가
이 기능을 계속 사용하려면 업그레이드해 주세요
Diff
checker
Pro
요금제 보기
75 행
복사
복사
복사됨
복사
복사됨
#if UNITY_EDITOR
using System;
using System;
using System.Collections.Generic;
using System.Collections.Generic;
복사
복사됨
복사
복사됨
using System.Globalization;
using System.Text;
using System.Text;
using UnityEditor;
using UnityEditor;
using UnityEditor.Compilation;
using UnityEditor.Compilation;
using UnityEngine;
using UnityEngine;
복사
복사됨
복사
복사됨
/// <summary>
/// https://gist.github.com/karljj1/9c6cce803096b5cd4511cf0819ff517b
/// </summary>
[InitializeOnLoad]
[InitializeOnLoad]
public class AsmdefDebug
public class AsmdefDebug
{
{
const string AssemblyReloadEventsEditorPref = "AssemblyReloadEventsTime";
const string AssemblyReloadEventsEditorPref = "AssemblyReloadEventsTime";
const string AssemblyCompilationEventsEditorPref = "AssemblyCompilationEvents";
const string AssemblyCompilationEventsEditorPref = "AssemblyCompilationEvents";
static readonly int ScriptAssembliesPathLen = "Library/ScriptAssemblies/".Length;
static readonly int ScriptAssembliesPathLen = "Library/ScriptAssemblies/".Length;
복사
복사됨
복사
복사됨
private static string AssemblyTotalCompilationTimeEditorPref = "AssemblyTotalCompilationTime";
static Dictionary<string, DateTime> s_StartTimes = new Dictionary<string, DateTime>();
static Dictionary<string, DateTime> s_StartTimes = new Dictionary<string, DateTime>();
static StringBuilder s_BuildEvents = new StringBuilder();
static StringBuilder s_BuildEvents = new StringBuilder();
static double s_CompilationTotalTime;
static double s_CompilationTotalTime;
static AsmdefDebug()
static AsmdefDebug()
{
{
CompilationPipeline.assemblyCompilationStarted += CompilationPipelineOnAssemblyCompilationStarted;
CompilationPipeline.assemblyCompilationStarted += CompilationPipelineOnAssemblyCompilationStarted;
CompilationPipeline.assemblyCompilationFinished += CompilationPipelineOnAssemblyCompilationFinished;
CompilationPipeline.assemblyCompilationFinished += CompilationPipelineOnAssemblyCompilationFinished;
AssemblyReloadEvents.beforeAssemblyReload += AssemblyReloadEventsOnBeforeAssemblyReload;
AssemblyReloadEvents.beforeAssemblyReload += AssemblyReloadEventsOnBeforeAssemblyReload;
AssemblyReloadEvents.afterAssemblyReload += AssemblyReloadEventsOnAfterAssemblyReload;
AssemblyReloadEvents.afterAssemblyReload += AssemblyReloadEventsOnAfterAssemblyReload;
}
}
static void CompilationPipelineOnAssemblyCompilationStarted(string assembly)
static void CompilationPipelineOnAssemblyCompilationStarted(string assembly)
{
{
s_StartTimes[assembly] = DateTime.UtcNow;
s_StartTimes[assembly] = DateTime.UtcNow;
}
}
static void CompilationPipelineOnAssemblyCompilationFinished(string assembly, CompilerMessage[] arg2)
static void CompilationPipelineOnAssemblyCompilationFinished(string assembly, CompilerMessage[] arg2)
{
{
복사
복사됨
복사
복사됨
var time = s_StartTimes[assembly];
var timeSpan = DateTime.UtcNow - s_StartTimes[assembly];
var timeSpan = DateTime.UtcNow - s_StartTimes[assembly];
s_CompilationTotalTime += timeSpan.TotalMilliseconds;
s_CompilationTotalTime += timeSpan.TotalMilliseconds;
복사
복사됨
복사
복사됨
s_BuildEvents.AppendFormat("{0:0.00}s {1}\n", timeSpan.TotalMilliseconds / 1000f,
assembly.Substring(ScriptAssembliesPathLen, assembly.Length - ScriptAssembliesPathLen));
s_BuildEvents.AppendFormat("{0:0.00}s {1}\n", timeSpan.TotalMilliseconds / 1000f,
assembly.Substring(ScriptAssembliesPathLen, assembly.Length - ScriptAssembliesPathLen));
}
}
static void AssemblyReloadEventsOnBeforeAssemblyReload()
static void AssemblyReloadEventsOnBeforeAssemblyReload()
{
{
복사
복사됨
복사
복사됨
s_BuildEvents.AppendFormat("compilation total: {0:0.00}s\n",
s_CompilationTotalTime / 1000f
);
var totalCompilationTimeSeconds = s_CompilationTotalTime / 1000f;
s_BuildEvents.AppendFormat("compilation total: {0:0.00}s\n",
totalCompilationTimeSeconds
);
EditorPrefs.SetString(AssemblyReloadEventsEditorPref, DateTime.UtcNow.ToBinary().ToString());
EditorPrefs.SetString(AssemblyReloadEventsEditorPref, DateTime.UtcNow.ToBinary().ToString());
EditorPrefs.SetString(AssemblyCompilationEventsEditorPref, s_BuildEvents.ToString());
EditorPrefs.SetString(AssemblyCompilationEventsEditorPref, s_BuildEvents.ToString());
복사
복사됨
복사
복사됨
EditorPrefs.SetString(AssemblyTotalCompilationTimeEditorPref, totalCompilationTimeSeconds.ToString(CultureInfo.InvariantCulture));
}
}
static void AssemblyReloadEventsOnAfterAssemblyReload()
static void AssemblyReloadEventsOnAfterAssemblyReload()
{
{
var binString = EditorPrefs.GetString(AssemblyReloadEventsEditorPref);
var binString = EditorPrefs.GetString(AssemblyReloadEventsEditorPref);
복사
복사됨
복사
복사됨
var totalCompilationTimeSeconds = float.Parse(EditorPrefs.GetString(AssemblyTotalCompilationTimeEditorPref, AssemblyTotalCompilationTimeEditorPref));
복사
복사됨
복사
복사됨
long bin
= 0
;
long bin
;
if (long.TryParse(binString, out bin))
if (long.TryParse(binString, out bin))
{
{
var date = DateTime.FromBinary(bin);
var date = DateTime.FromBinary(bin);
var time = DateTime.UtcNow - date;
var time = DateTime.UtcNow - date;
var compilationTimes = EditorPrefs.GetString(AssemblyCompilationEventsEditorPref);
var compilationTimes = EditorPrefs.GetString(AssemblyCompilationEventsEditorPref);
복사
복사됨
복사
복사됨
var totalTimeSeconds = totalCompilationTimeSeconds + time.TotalSeconds;
if (!string.IsNullOrEmpty(compilationTimes))
if (!string.IsNullOrEmpty(compilationTimes))
{
{
복사
복사됨
복사
복사됨
Debug.Log(
"Compilation Report
\n" + compilationTimes + "Assembly Reload Time: " + time.TotalSeconds + "s\n");
Debug.Log(
$
"Compilation Report
: {totalTimeSeconds:F2} seconds
\n" + compilationTimes + "Assembly Reload Time: " + time.TotalSeconds + "s\n");
}
}
}
}
}
}
}
}
복사
복사됨
복사
복사됨
#endif
저장된 비교 결과
원본
파일 열기
using System; using System.Collections.Generic; using System.Text; using UnityEditor; using UnityEditor.Compilation; using UnityEngine; [InitializeOnLoad] public class AsmdefDebug { const string AssemblyReloadEventsEditorPref = "AssemblyReloadEventsTime"; const string AssemblyCompilationEventsEditorPref = "AssemblyCompilationEvents"; static readonly int ScriptAssembliesPathLen = "Library/ScriptAssemblies/".Length; static Dictionary<string, DateTime> s_StartTimes = new Dictionary<string, DateTime>(); static StringBuilder s_BuildEvents = new StringBuilder(); static double s_CompilationTotalTime; static AsmdefDebug() { CompilationPipeline.assemblyCompilationStarted += CompilationPipelineOnAssemblyCompilationStarted; CompilationPipeline.assemblyCompilationFinished += CompilationPipelineOnAssemblyCompilationFinished; AssemblyReloadEvents.beforeAssemblyReload += AssemblyReloadEventsOnBeforeAssemblyReload; AssemblyReloadEvents.afterAssemblyReload += AssemblyReloadEventsOnAfterAssemblyReload; } static void CompilationPipelineOnAssemblyCompilationStarted(string assembly) { s_StartTimes[assembly] = DateTime.UtcNow; } static void CompilationPipelineOnAssemblyCompilationFinished(string assembly, CompilerMessage[] arg2) { var time = s_StartTimes[assembly]; var timeSpan = DateTime.UtcNow - s_StartTimes[assembly]; s_CompilationTotalTime += timeSpan.TotalMilliseconds; s_BuildEvents.AppendFormat("{0:0.00}s {1}\n", timeSpan.TotalMilliseconds / 1000f, assembly.Substring(ScriptAssembliesPathLen, assembly.Length - ScriptAssembliesPathLen)); } static void AssemblyReloadEventsOnBeforeAssemblyReload() { s_BuildEvents.AppendFormat("compilation total: {0:0.00}s\n", s_CompilationTotalTime / 1000f); EditorPrefs.SetString(AssemblyReloadEventsEditorPref, DateTime.UtcNow.ToBinary().ToString()); EditorPrefs.SetString(AssemblyCompilationEventsEditorPref, s_BuildEvents.ToString()); } static void AssemblyReloadEventsOnAfterAssemblyReload() { var binString = EditorPrefs.GetString(AssemblyReloadEventsEditorPref); long bin = 0; if (long.TryParse(binString, out bin)) { var date = DateTime.FromBinary(bin); var time = DateTime.UtcNow - date; var compilationTimes = EditorPrefs.GetString(AssemblyCompilationEventsEditorPref); if (!string.IsNullOrEmpty(compilationTimes)) { Debug.Log("Compilation Report\n" + compilationTimes + "Assembly Reload Time: " + time.TotalSeconds + "s\n"); } } } }
수정본
파일 열기
#if UNITY_EDITOR using System; using System.Collections.Generic; using System.Globalization; using System.Text; using UnityEditor; using UnityEditor.Compilation; using UnityEngine; /// <summary> /// https://gist.github.com/karljj1/9c6cce803096b5cd4511cf0819ff517b /// </summary> [InitializeOnLoad] public class AsmdefDebug { const string AssemblyReloadEventsEditorPref = "AssemblyReloadEventsTime"; const string AssemblyCompilationEventsEditorPref = "AssemblyCompilationEvents"; static readonly int ScriptAssembliesPathLen = "Library/ScriptAssemblies/".Length; private static string AssemblyTotalCompilationTimeEditorPref = "AssemblyTotalCompilationTime"; static Dictionary<string, DateTime> s_StartTimes = new Dictionary<string, DateTime>(); static StringBuilder s_BuildEvents = new StringBuilder(); static double s_CompilationTotalTime; static AsmdefDebug() { CompilationPipeline.assemblyCompilationStarted += CompilationPipelineOnAssemblyCompilationStarted; CompilationPipeline.assemblyCompilationFinished += CompilationPipelineOnAssemblyCompilationFinished; AssemblyReloadEvents.beforeAssemblyReload += AssemblyReloadEventsOnBeforeAssemblyReload; AssemblyReloadEvents.afterAssemblyReload += AssemblyReloadEventsOnAfterAssemblyReload; } static void CompilationPipelineOnAssemblyCompilationStarted(string assembly) { s_StartTimes[assembly] = DateTime.UtcNow; } static void CompilationPipelineOnAssemblyCompilationFinished(string assembly, CompilerMessage[] arg2) { var timeSpan = DateTime.UtcNow - s_StartTimes[assembly]; s_CompilationTotalTime += timeSpan.TotalMilliseconds; s_BuildEvents.AppendFormat("{0:0.00}s {1}\n", timeSpan.TotalMilliseconds / 1000f, assembly.Substring(ScriptAssembliesPathLen, assembly.Length - ScriptAssembliesPathLen)); } static void AssemblyReloadEventsOnBeforeAssemblyReload() { var totalCompilationTimeSeconds = s_CompilationTotalTime / 1000f; s_BuildEvents.AppendFormat("compilation total: {0:0.00}s\n", totalCompilationTimeSeconds); EditorPrefs.SetString(AssemblyReloadEventsEditorPref, DateTime.UtcNow.ToBinary().ToString()); EditorPrefs.SetString(AssemblyCompilationEventsEditorPref, s_BuildEvents.ToString()); EditorPrefs.SetString(AssemblyTotalCompilationTimeEditorPref, totalCompilationTimeSeconds.ToString(CultureInfo.InvariantCulture)); } static void AssemblyReloadEventsOnAfterAssemblyReload() { var binString = EditorPrefs.GetString(AssemblyReloadEventsEditorPref); var totalCompilationTimeSeconds = float.Parse(EditorPrefs.GetString(AssemblyTotalCompilationTimeEditorPref, AssemblyTotalCompilationTimeEditorPref)); long bin; if (long.TryParse(binString, out bin)) { var date = DateTime.FromBinary(bin); var time = DateTime.UtcNow - date; var compilationTimes = EditorPrefs.GetString(AssemblyCompilationEventsEditorPref); var totalTimeSeconds = totalCompilationTimeSeconds + time.TotalSeconds; if (!string.IsNullOrEmpty(compilationTimes)) { Debug.Log($"Compilation Report: {totalTimeSeconds:F2} seconds\n" + compilationTimes + "Assembly Reload Time: " + time.TotalSeconds + "s\n"); } } } } #endif
비교하기