Dưới đây là danh sách các thẻ phổ biến trong MicroProfiler, được nhóm theo danh mục. Các thẻ cũng được gọi thay thế là nhiệm vụ, bộ đếm thời gian, phạm vi, quy trình và nhãn. Dù tên gọi là gì, chúng đại diện cho một đơn vị công việc.
Hiểu các thẻ này có thể giúp bạn xác định mã gặp vấn đề trong trò chơi của bạn. Các bảng chứa nhãn thẻ, mô tả và lời khuyên để cải thiện hiệu suất và tối ưu hóa trò chơi của bạn.
Ngủ
Khi các luồng không thực hiện nhiệm vụ, chúng sẽ vào trạng thái ngủ, với các thẻ để chỉ ra thời gian mà luồng đã ngủ. Tại bất kỳ thời điểm nào, rất phổ biến cho hầu hết các luồng làm việc ở trong trạng thái ngủ.
Điều hướng
| Nhãn | Mô tả | Lời khuyên về hiệu suất |
|---|---|---|
| rasterizeTile | Cập nhật các ô điều hướng cần thiết cho một yêu cầu tìm đường, thường được theo sau bởi computePath mà yêu cầu các ô đó phải được cập nhật. Theo sau NavigationJob/preprocess trên luồng chính. | Giảm số lượng các ô tìm đường bị vô hiệu hóa, vì điều này khiến các đường đi đó cần phải được tính toán lại. Điều này xảy ra do các phần không thể điều hướng di chuyển. |
| computePath | Tính toán các đường đi, thường là sau rasterizeTile. | Giảm số lượng và phạm vi thế giới của các cuộc gọi Path:ComputeAsync(). Cố gắng tái sử dụng các đường đi cho nhiều tác nhân nếu họ dự kiến bắt đầu/kết thúc từ các vị trí tương tự. |
| preprocess/getPrimitivesOverlapping | Thu thập hình học thế giới cho mỗi ô tìm đường và lên lịch các nhiệm vụ raster hóa để được thực hiện bởi luồng tìm đường. | Giảm số lượng các phần. |
Hoạt hình và người
| Nhãn | Mô tả | Lời khuyên về hiệu suất |
|---|---|---|
| Simulation/gameStepped | Xử lý các đối tượng cụ thể của trò chơi như Humanoids, Animations và các callback nhịp tim. | Xem các nhãn gameStepped bên dưới. |
| Simulation/gameStepped/stepHumanoid | Thay đổi trạng thái và chuyển động của Humanoid. | Giảm số lượng Humanoids hoặc vô hiệu hóa các trạng thái Humanoid trên các NPC không cần chúng, chẳng hạn như Climbing hoặc Swimming. Giảm số lượng callback đến Humanoid.StateChanged hoặc các thay đổi trạng thái như Running hoặc Died. |
| Simulation/gameStepped/stepAnimation | Animators sẽ tiến lên trong các hoạt hình đang phát. | Giảm số lượng Animators hoặc các khớp hoạt hình để giảm tải công việc của bước này. Giảm số lượng callback đến các sự kiện hoạt hình như AnimationTrack.KeyframeReached hoặc AnimationTrack.Ended. |
| Simulation/gameStepped/RunService.Stepped | Chạy các hàm kết nối với sự kiện RunService.Stepped. | Giảm số lượng hoặc tải công việc của các hàm kết nối với sự kiện này. Cân nhắc trì hoãn hoặc thay thế các tính toán tốn kém hoặc phân bổ tính toán qua nhiều khung hình. |
Âm thanh
| Nhãn | Mô tả | Lời khuyên về hiệu suất |
|---|---|---|
| Sound | Xử lý mô phỏng âm thanh và cập nhật âm thanh trong phát lại hoạt động. | Xem các nhãn Sound bên dưới. |
| Sound/stepInstances | Cập nhật âm lượng của các âm thanh đang hoạt động trong không gian làm việc. | Giảm số lượng âm thanh trong phát lại hoạt động. |
Mạng
| Nhãn | Mô tả | Lời khuyên về hiệu suất |
|---|---|---|
| Net PacketReceive | Nhận các gói mạng. Nếu nhiều đối tượng hoặc sự kiện đang được sao chép, bước này sẽ mất nhiều thời gian hơn. | Sao chép ít đối tượng hoặc sự kiện hơn. |
| Replicator/ProcessPackets | Xử lý nội dung của các gói mạng, chẳng hạn như chuyển động, gọi sự kiện và thay đổi thuộc tính. | Giảm số lượng hoặc kích thước của các đối tượng đang được sao chép, hoặc thực hiện điều này theo từng bước gia tăng. Có thể tăng nếu kích thước bản đồ tăng, vì các bản đồ lớn hơn thường có nhiều hoạt động tổng thể hơn. |
| Allocate Bandwidth and Run Senders/Dispatch Physics Senders and TouchSenders | Gửi dữ liệu về hoạt động trong trò chơi. | Giảm số lượng đối tượng di chuyển và/hoặc chạm. Xem các phần tiếp theo. |
| Allocate Bandwidth and Run Senders/Dispatch StreamJob | Gửi các vùng cụ thể tương ứng đến các khách hàng cụ thể trong tính năng phát trực tuyến. | Giảm bán kính phát trực tuyến tối thiểu và mục tiêu. |
| Allocate Bandwidth and Run Senders/Dispatch Data Senders | Gửi các thay đổi thuộc tính, gọi sự kiện từ xa, thay đổi trạng thái Humanoid, thay đổi trạng thái hoạt hình và sao chép các thể hiện mới. | Giảm số lượng các thay đổi được sao chép đến mô hình dữ liệu. |
| Replicator SendCluster | Gửi dữ liệu Terrain đến các khách hàng. | Giảm số lượng hoặc kích thước của các thay đổi địa hình. |
| ModelCompleteness Mega Job | Chỉ dành cho máy chủ: độ hoàn chỉnh là một khái niệm nội bộ. Khi các mô hình được gửi hoàn toàn, các sự kiện độ hoàn chỉnh của mô hình được gửi. | Thêm hoặc xóa ít thể hiện hơn. |
| deserializePacket | Xử lý gói mạng ở mức thấp. Chuẩn bị cho Replicator/ProcessPackets. | Gửi ít hoặc các cập nhật nhỏ hơn. |
Kết xuất
| Nhãn | Mô tả | Lời khuyên về hiệu suất |
|---|---|---|
| Prepare | Thông tin được thu thập từ luồng chính và cập nhật các cấu trúc dữ liệu khác nhau được sử dụng cho việc kết xuất. | Xem các nhãn Prepare bên dưới. |
| Prepare/Pass3dAdorn | Xử lý việc kết xuất các đồ trang trí đối tượng khác nhau, chẳng hạn như nhãn văn bản trên các đối tượng. Đối với các nhãn Humanoid có che khuất, bước này bao gồm việc raycasting để xác định xem các đối tượng đó có thể nhìn thấy hay không. Điều này bao gồm các phần không trong suốt để tạo điều kiện cho việc trực quan hóa gỡ lỗi. | Giảm số lượng các đối tượng trang trí có thể nhìn thấy, chẳng hạn như BillboardGuis, nhãn tên/sức khỏe Humanoid, v.v. Giảm số lượng các phần có thể nhìn thấy. |
| Prepare/Pass2d | Chuẩn bị cho việc kết xuất UI 2D (cả UI của người chơi và Roblox). | Giảm số lượng hoặc độ phức tạp của các phần tử UI. |
| Prepare/UpdatePrepare/updateInvalidParts | Cập nhật các phần đã có một thuộc tính thay đổi hoặc được thêm vào. | Giảm số lượng thay đổi thuộc tính trên thế giới. Nếu một kịch bản cập nhật một tập hợp lớn các thuộc tính đối tượng, hãy chia nhỏ nó qua các khung hình. |
| Prepare/UpdatePrepare/updateInvalidatedFastClusters | Chuẩn bị các hình học "FastCluster" được sử dụng để kết xuất Humanoids và MeshParts đã được skinned. Các nhãn chỉ định số lượng các phần, đỉnh và kích thước của các đỉnh. | Giảm các thay đổi hình ảnh đối với các mô hình có Humanoids hoặc MeshParts đã được skinned. |
| Prepare/UpdatePrepare/updateDynamicParts | Chuẩn bị Beams, ParticleEmitters, và Humanoids cho việc kết xuất. | Giảm số lượng Beams, ParticleEmitters, và Humanoids có thể nhìn thấy. |
| Prepare/UpdatePrepare/updateInstancedClusters | Cập nhật hình học sử dụng kết xuất thể hiện như các phần. Các nhãn Clusters và Instances chỉ định số lượng đã được cập nhật. | Giảm công việc mà ngầm cập nhật hộp bao quanh của phần, chẳng hạn như BasePart.CFrame, BasePart.Size, hoặc Motor6D.Transform. Các cập nhật thuộc tính sáng tạo như Bone.Transform có thể giúp. |
| Perform | Khi các lệnh kết xuất thực tế được tạo ra và phát hành. | Xem các nhãn Perform bên dưới. |
| Perform/fillGuiVertices | Điền các bộ đệm với các đỉnh UI để chuẩn bị cho việc kết xuất. Nhãn gui count chỉ ra số lượng LayerCollectors có thể nhìn thấy trong khung hình. | Nếu chi phí cao, giảm số lượng, mật độ và không gian mà các phần tử UI chiếm. Nếu có quá nhiều nhãn Process GuiEffect, hãy cân nhắc giảm việc sử dụng UIGradient và UICorner trên các nhãn văn bản. |
| Perform/Scene/queryFrustumOrdered | Áp dụng culling frustum để các đối tượng không nhìn thấy không được kết xuất. | Nếu có chi phí cao có nghĩa là có nhiều phần tử. Có thể sử dụng một số mesh lớn hơn nơi mà một mesh đơn có nhiều chi tiết hơn so với nhiều mảnh nhỏ riêng lẻ. |
| Perform/Scene/computeLightingPerform | Tính toán ánh sáng gần camera. | Điều chỉnh số lượng nguồn sáng hoặc di chuyển camera ít hơn để giảm thời gian cần thiết để tính toán lại ánh sáng. |
| Perform/Scene/computeLightingPerform/LightGridCPU | Cập nhật ánh sáng voxel, được sử dụng ở các mức chất lượng thấp hơn. | Nếu việc cập nhật độ chiếm chỗ của khối mất quá nhiều thời gian, hãy cân nhắc sử dụng hình học độ phân giải thấp hơn, giảm số lượng các phần, hoặc neo các phần. Nếu các nhãn khác mất quá nhiều thời gian, hãy cân nhắc giảm số lượng đèn và sử dụng hình học không đổ bóng cho các đối tượng di chuyển và làm vô hiệu hóa độ chiếm chỗ. |
| Perform/Scene/computeLightingPerform/ShadowMapSystem | Cập nhật bản đồ bóng. Không thực hiện ở các mức chất lượng dưới 4. | Giảm số lượng đèn. Bạn cũng có thể sử dụng Light.Shadows và BasePart.CastShadow để vô hiệu hóa việc đổ bóng trên các thể hiện ít quan trọng hơn. Xem Cải thiện hiệu suất. |
| Perform/Scene/Glow, ColorCorrection, MSAA, SSAO, and SSAOApply | Kết xuất xử lý hậu kỳ. | Giảm số lượng hiệu ứng xử lý hậu kỳ. Thông thường điều này không đáng kể. |
| Perform/Scene/UI | Kết xuất UI. Trong Id_Screen, có một nhãn với số lượng lô, vật liệu và tam giác được sử dụng. | Giảm số lượng các phần tử UI có thể nhìn thấy. Sử dụng CanvasGroups có thể giúp nhưng sẽ tăng mức sử dụng bộ nhớ. |
| Perform/Scene/UpdateView/updateParticles, updateParticleBoundings | Cập nhật vị trí và giới hạn của các hạt. | Giảm số lượng ParticleEmitters, tỷ lệ phát, thời gian sống, v.v. Giới hạn chuyển động của các bộ phát. |
| Scene/Id_Opaque, RenderView/Id_Opaque | Các phần trong cảnh có độ trong suốt tổng thể là 0.01 hoặc thấp hơn. | Giảm việc sử dụng và mật độ của các phần. |
| Scene/Id_Transparent, RenderView/Id_Transparent | Các phần trong cảnh có độ trong suốt tổng thể giữa 0.01 và 1. | Giảm việc sử dụng độ trong suốt một phần. |
| Scene/Id_Decals, RenderView/Id_Decals | Các decal trong cảnh. | Giảm việc sử dụng decal trên các mesh phức tạp. |
| Scene/Shadows | Tính toán lại bóng trong cảnh, thường được thực hiện trên các cảnh động và gameplay điển hình. Các phần bất kể độ trong suốt đều đổ bóng với giả định rằng chúng chứa decal. Không thực hiện ở các mức chất lượng dưới 4. | Nếu bước này mất quá nhiều thời gian, hãy cân nhắc vô hiệu hóa BasePart.CastShadow cho các mesh phức tạp, các phần có độ trong suốt một phần cao, và các thể hiện ít quan trọng hơn. Các phần hoàn toàn trong suốt không có decal hoặc không cần bóng decal nên có BasePart.CastShadow vô hiệu hóa. Xem Cải thiện hiệu suất. |
| Perform/Present | Chuyển tiếp đến luồng GPU để thực hiện các lệnh kết xuất. | Giảm độ phức tạp của cảnh nói chung. Nếu bước này mất nhiều thời gian, bạn có thể bị giới hạn bởi GPU. |
| Perform/Present/waitUntilCompleted | Chờ GPU hoàn thành việc kết xuất khung hình trước đó. | Nếu điều này thường xuyên xảy ra thì số lượng thứ được kết xuất là quá cao. Trình quản lý Tốc độ Khung hình giúp cân bằng điều này, nhưng nếu nó vẫn cao, hãy thử làm theo lời khuyên về hiệu suất từ các thẻ Scene riêng lẻ. |
| LoadImage | Xử lý hình ảnh thành định dạng mà engine có thể sử dụng. | Giảm việc sử dụng hình ảnh lớn. |
Kịch bản
| Nhãn | Mô tả | Lời khuyên về hiệu suất |
|---|---|---|
| Render/PreRender/fireBindToRenderSteppedCallbacks | Chạy các hàm được liên kết với bước kết xuất qua RunService:BindToRenderStep(). | Đảm bảo các hàm kết nối với sự kiện này thực hiện ít công việc nhất có thể. |
| Render/PreRender/RunService.RenderStepped | Chạy các hàm kết nối với sự kiện RunService.RenderStepped. | Đảm bảo các hàm kết nối với sự kiện này thực hiện ít công việc nhất có thể. |
| WaitingHybridScriptJob | Tiếp tục các kịch bản đang chờ sử dụng Instance:WaitForChild() hoặc Globals.Roblox.wait(). Thường được thực hiện 30 lần mỗi giây. Bước này có một ngân sách thời gian thực thi để chạy các kịch bản đang chờ. | Nếu bạn có quá nhiều kịch bản đang chờ hoặc các kịch bản có thời gian chạy dài trước khi nhường, bước này sẽ bị giới hạn và chờ lâu hơn trước khi có thể chạy lại. Giảm số lượng các hàm liên kết hoặc các tính toán dài trong bước này. |
| GC | Chu kỳ thu gom rác của Luau. | Pool các bảng và các đối tượng có thể thu gom khác hoặc cố gắng giảm việc tạo các bảng tạm thời. |
| Heartbeat/RunService.Heartbeat | Chạy các hàm kết nối với sự kiện RunService.Heartbeat. | Giảm số lượng hoặc tải công việc của các hàm kết nối với sự kiện này. Cân nhắc trì hoãn hoặc thay thế các tính toán tốn kém hoặc phân bổ tính toán qua nhiều khung hình. |
Mô phỏng
| Nhãn | Mô tả | Lời khuyên về hiệu suất |
|---|---|---|
| Distributed Physics Ownership | Xác định xem máy chủ hay một khách hàng có quyền kiểm soát một số thể hiện nhất định như các phần hay không. | Giảm số lượng các phần thường xuyên chuyển đổi quyền sở hữu mạng, đặc biệt là những phần có tương tác chung. |
| Simulation/assemble | Cập nhật một cây các đối tượng kết nối (các lắp ráp) được sử dụng bởi engine vật lý. | Giảm số lượng các khớp được tạo ra hoặc bị phá hủy. |
| Simulation/physicsSteppedTotal/physicsStepped | Chạy mô phỏng vật lý. | Giảm số lượng và độ phức tạp của các cơ thể được mô phỏng vật lý. |
| Simulation/physicsSteppedTotal/physicsStepped/SpatialFilter/filterStep | Cập nhật các hòn đảo mô phỏng, sắp xếp các phần theo quyền sở hữu mạng, mô phỏng cục bộ. Các hòn đảo là các nhóm phần không tương tác có thể được mô phỏng độc lập. | Tránh thiết lập quyền sở hữu mạng thường xuyên. Giữ các nhóm phần cách xa nhau đủ để chúng có thể được mô phỏng riêng biệt. |
| Simulation/physicsSteppedTotal/physicsStepped/worldStep/stepContacts | Cập nhật các tiếp xúc giữa các đối tượng. | Giảm số lượng các cơ thể va chạm cùng một lúc, hoặc sử dụng các hộp va chạm đơn giản hơn. Hình khối tốt hơn so với các mesh phức tạp. |
| Simulation/physicsSteppedTotal/physicsStepped/worldStep/stepWorld HOẶC stepWorldThrottled | Giải quyết các phương trình vật lý liên quan đến các kết nối, độ nổi và Humanoids. Khi engine bị quá tải và không thể mô phỏng mọi thứ theo thời gian thực, một số bước có thể bị giới hạn (stepWorldThrottled) và chỉ "các lắp ráp theo thời gian thực" như Humanoids được mô phỏng. | Phụ thuộc vào nơi thời gian đang trôi qua dựa trên ba giai đoạn sau: stepContacts: kiểm tra hình học phát hiện va chạm giai đoạn hẹp. Solver step: tích hợp thời gian và giải quyết va chạm và các ràng buộc khác updateBroadphase: cập nhật vị trí của các lắp ráp trong hệ thống phát hiện va chạm và tìm các cặp giai đoạn hẹp có thể va chạm. |
| notifyMovingAssemblies | Giúp theo dõi thời gian mà các phần tử đã ngủ. | |
| Simulation/physicsSteppedTotal/physicsStepped/interpolateNetworkedAssemblies | Nội suy các lắp ráp không được điều khiển bởi người chơi hiện tại. | Đặt chủ sở hữu mạng của các phần thành người chơi hiện tại để giảm điều này; mặc dù điều này thường sẽ gây ra nhiều công việc vật lý hơn được thực hiện ở nơi khác. |
| Simulation/handleFallenParts | Xóa các phần đã rơi xuống dưới Workspace.FallenPartsDestroyHeight. | Giảm chiều cao phá hủy hoặc giảm số lượng các phần rơi xuống chiều cao phá hủy. |
| Heartbeat/heartbeatInternal/workspaceOnHeartbeat/updateVisuallySleeping | Phần thứ hai của notifyMovingAssemblies. | |
| Heartbeat/RunService.Heartbeat | Chạy các hàm kết nối với sự kiện RunService.Heartbeat đến các tiếp xúc mô phỏng và kịch bản. Mô tả hiện tại đủ chung để không sai. | Giảm số lượng hoặc tải công việc của các hàm kết nối với RunService.Heartbeat. |
| worldStep/stepContacts | Giúp mô phỏng vật lý bước nhiều tiếp xúc cùng một lúc. | Giảm số lượng các đối tượng va chạm. |
| SolveBatch | Giúp mô phỏng vật lý giải quyết các lô chuyển động của các đối tượng. |
UI
| Nhãn | Mô tả | Lời khuyên về hiệu suất |
|---|---|---|
| Render/PreRender/UpdateInput | Cập nhật và kích hoạt tất cả các sự kiện liên quan đến đầu vào của người dùng nếu người dùng đã thực hiện đầu vào kể từ khung hình trước. | Cố gắng không thực hiện quá nhiều công việc trực tiếp khi bạn nhận được đầu vào. Cân nhắc thực hiện một lượng tối thiểu xử lý cho đầu vào, và các tính toán lớn hơn nên được đẩy sang một luồng khác xảy ra sau đó. |
| Render/PreRender/TweenService | Cập nhật các đối tượng đang được tweened sử dụng TweenService và gọi các callback hoàn thành, chẳng hạn như những cái được cung cấp cho GuiObject:TweenSize() hoặc GuiObject:TweenPosition(). | Giảm số lượng các đối tượng đang được tweened sử dụng TweenService và đảm bảo các callback thực hiện ít công việc nhất có thể. |
| Heartbeat/TweenService | Trong máy chủ, TweenService chạy trong RunService.Heartbeat thay vì RunService.PreRender. | Giảm số lượng các đối tượng đang được tweened sử dụng TweenService và đảm bảo các callback thực hiện ít công việc nhất có thể. |
| Render/PreRender/UpdateUILayouts | Cập nhật vị trí và kích thước cho các phần tử UI trên tất cả các LayerCollectors được bật. | Xem các nhãn UpdateUILayouts bên dưới. |
| Render/PreRender/UpdateUILayouts/Rebuild Z-order list | Xây dựng lại danh sách thứ tự Z nội bộ của các phần tử UI (không nên nhầm lẫn với GuiObject.ZIndex) trong một LayerCollector khi kết xuất lần đầu hoặc khi một phần tử mới được thêm vào, xóa đi, hoặc có GuiObject.ZIndex của nó thay đổi. | Giảm số lượng các phần tử UI trong LayerCollectors trước khi kết xuất lần đầu và tránh thay đổi thường xuyên cha mẹ và GuiObject.ZIndex của các phần tử UI bên trong chúng. Số lượng phần tử mà một LayerCollector có, hiệu suất sẽ càng kém. |
| Render/PreRender/UpdateUILayouts/Layout | Cập nhật vị trí và kích thước cho các phần tử UI trong một LayerCollector riêng lẻ. Có thể chứa một nhãn với thông tin về UI liên quan, cùng với số lượng Relayouts, Updates và Resizes. | Giảm số lượng các phần tử UI đang được thay đổi kích thước hoặc định vị lại, chẳng hạn như những cái được quản lý bởi UILayout và những cái được tweened với TweenService, GuiObject:TweenSize(), hoặc GuiObject:TweenPosition(). Cân nhắc sử dụng kích thước cố định cho BillboardGuis. |