스크립트 프로필러

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

스크립트 프로필러 는 모든 실행 스크립트의 프로파일을 작성하고 사용자 지정 레코딩 및 표시 설정으로 CPU 시간 비용을 볼 수 있는 도구입니다. 모든 유형의 함수 호출, 메서드 호출 및 속성 액세스를 포함하여 실행 스크립트의 프로파일을

프로필 세션 녹음

녹음하기 전에 녹음 환경을 선택해야 합니다.

  • 클라이언트 (기본) — 클라이언트 사이드 스크립트를 기록합니다. — LocalScriptsScripts 와 함께 0> Class.BaseScript.RunContext|RunContext0> 를 설정하여 3> Enum.RunContext.Client|Client 3> 에 합니
  • 서버 — 서버 사이드 스크립트를 기록합니다, 포함 ScriptsRunContext 를 설정하여 0> Enum.RunContext.Server|Server0> 또는 3> Enum.RunContext.Legacy|Legacy 3> 에

다음 레코딩 옵션을 설정할 수도 있습니다.

동작옵션기본설명
주파수1초당 1000회 (1KHz)10,000회 (10KHz)1kHz10 KHz 주파수는 스크립트 프로필러가 선택한 주파수보다 자주 실행되는 API 호출을 감지하지 못하므로 더 높은 정확도를 갖지만 성능 비용이 더 높습니다.
세션 길이1분5분10분 동안 수동설명서수동으로 녹음하는 옵션은 설명서에 설명된 대로 중지해야 합니다.
라이브 조사 동작끄기끄기이 동작은 프로파일 세션 중에 프로파일 데이터를 조사하고 새로 고칩니다.

새로운 프로파일 세션을 기록하려면:

  1. 도구 드롭다운을 확장하여 스크립트 프로파일러 를 선택합니다.

    Dropdown menu of all Developer Console tools with the ScriptProfiler option highlighted for selection.
  2. 클라이언트-서버 드롭다운을 확장하여 클라이언트 또는 서버 를 선택합니다.

    Dropdown menu with Client and Server options for selection.
  3. (옵션) 라이브 체크 박스를 선택하여 라이브 조사 동작을 활성화하십시오.

  4. (옵션) FreqTime 를 선택하여 기본 값을 사용하지 않고 레코딩 주기 및 세션 시간을 선택하십시오.

  5. 시작을 클릭하면 프로파일 세션이 시작됩니다. 기간을 설정하면 스크립트 프로파일러가 세션에 남은 시간을 표시하는 카운트다운 타이머를 표시합니다.

  6. 클릭 정지 또는 레코딩이 완료될 때까지 기다리면 프로파일 데이터를 표시합니다.

프로필 데이터 읽기

세션이 종료되면 스크립트 프로필러는 얼마나 많은 시간이 소비되는지 보여주는 테이블을 생성합니다. 테이블은 가장 많은 시간을 소비하는 함수 호출을 순으로 정렬하고 사용자가 이름별로 특정 함수를 검색할 수 있습니다. 다음을 제공합니다.

  • 콜 그래프 (기본): 프레임 작업에 따라 함수 호출을 트리 구조로 카테고리화하고 표시합니다. 이 뷰는 각 카테고리 작업 카테고리를 노드로 표시하고 함수를 확장하여 볼 수 있습 Example callgraph view of a profiling session.
  • 함수 : 모든 함수를 태스크 없이 목록합니다. Example functions view of a profiling session.

다음 표시 옵션 중에서 디버깅 요구 사항을 조정할 수도 있습니다.

이름옵션기본설명
단위밀리초 (ms)백분율 (%)ms총 녹음 세션의 일부 또는 밀리초 단위의 API 호출에 소비된 시간을 표시합니다.Displays time spent on each API call in milliseconds or percentages of the total recording session.
평균오프1-초1-분5-분10-분끄기선택한 값으로 각 API 호출의 평균 시간을 계산합니다. 세션 길이가 더 긴 옵션을 선택하면 스크립트 프로필러가 세션 길이를 추정하여 평균을 계산합니다. 예를 들어, 5분 동안 코드를 실행하면 5분 기준 평균 값을 얻을 수 있습니다.

프로파일 데이터 내보기

스크립트 프로파일러를 사용하여 프로파일을 내보낼 수 있습니다. 프로파일을 내보내려면 프로파일 세션 후에 프로파일을 내보내세요.

  1. 스크립트 프로필러 창에서 내보내기 를 클릭하십시오.

  2. 내보 창에서 내보할 프로파일 세션을 선택하십시오. 사용자 지정 이름을 설정하려면 기본 파일 이름을 변경하십시오.

  3. 클릭 내보내기 파일을 저장하려면.

    Example export window.

내보낸 JSON 파일에는 다음과 같은 필드가 포함됩니다.

  • 버전 : 버전 번호.
  • 세션 시작 시간 : 세션 시작 시간을 기록하는 밀리초 값입니다.
  • 세션 종료 시간 : 세션 종료 시간을 기록하는 밀리초 값입니다.
  • 카테고리 : 프로파일 세션에 기록된 프레임 작업 카테고리 배열. 각 항목에는 다음이 포함됩니다.
    • 이름 : 각 프레임 작업 카테고리의 이름.
    • NodeId : 태스크 카테고리(노드)의 고유 식별자. 이것은 Nodes 배열의 1-기반 인덱스입니다. 예를 들어, 123rd 요소를 검색하여 123개의 요소를 가져오면 0> 1230> 배열에서 123개의
  • 노드 : 프로파일 세션에 기록된 배열의 노드. 각 항목에는 다음이 포함됩니다.
    • 총 지속 시간 : 노드가 CPU 시간에 소비하는 총 시간.
    • FunctionIds : 함수의 고유 식별자 배열.
    • 노드 ID : 노드 아이디의 배열.
  • 함수 : 프로파일 세션에 기록된 함수 배열.
    • 총 지속 시간 : 함수가 CPU 시간에 소비하는 총 시간.
    • 이름 : 함수의 이름, 있을 경우.
    • 원본 : 함수의 원본, 있을 경우.
    • : 함수의 줄 번호, 있을 경우.
    • 깃발 : 특정 기능 실행 환경을 나타내는 작은 필드입니다. 현재 다음과 같은 값을 가질 수 있습니다.
      • 0 : 네이티브 코드 엔진에서 실행할 때 IsNative를 나타냅니다.
      • 1 : 플러그인의 일부로 실행되는 경우 IsPlugin를 나타냅니다.
수출된 프로파일 데이터 예시

{
"Version":2,
"SessionStartTime":1704850750514,
"SessionEndTime":1704850751198,
"Categories":
[
{"Name":"Parallel Luau","NodeId":4},
{"Name":"Heartbeat","NodeId":1}
],
"Nodes":
[
{"TotalDuration":2530,"FunctionIds":[1],"NodeIds":[2]},
{"TotalDuration":2530,"FunctionIds":[2,5],"NodeIds":[3,7]},
{"TotalDuration":1267},
{"TotalDuration":7746,"FunctionIds":[3],"NodeIds":[5]},
{"TotalDuration":7746,"FunctionIds":[4],"NodeIds":[6]},
{"TotalDuration":7746},
{"TotalDuration":1263,"FunctionIds":[6],"NodeIds":[8]},
{"TotalDuration":1263,"FunctionIds":[7],"NodeIds":[9]},
{"TotalDuration":1263,"FunctionIds":[8],"NodeIds":[10]},
{"TotalDuration":1263}
],
"Functions":
[
{"Name":"main","TotalDuration":2530},
{"Source":"builtin_ManageCollaborators.rbxm.ManageCollaborators.Packages._Index.roblox_rodux-3.0.0.rodux.Store","Line":81,"TotalDuration":1267},
{"Name":"Script","TotalDuration":7746},
{"Source":"Workspace.Actor.Script","Line":1,"TotalDuration":7746},
{"Source":"builtin_DeveloperInspector.rbxm.DeveloperInspector.Packages._Index.DeveloperFramework.DeveloperFramework.UI.Components.Grid","Line":221,"TotalDuration":1263},
{"Source":"builtin_DeveloperInspector.rbxm.DeveloperInspector.Packages._Index.DeveloperFramework.DeveloperFramework.UI.Components.Grid","Name":"_update","Line":236,"TotalDuration":1263},
{"Source":"builtin_DeveloperInspector.rbxm.DeveloperInspector.Packages._Index.DeveloperFramework.DeveloperFramework.UI.Components.Grid","Name":"_getRange","Line":277,"TotalDuration":1263},
{"Source":"[C]","Name":"ScrollingFrame.CanvasPosition","TotalDuration":1263}
]
}