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à tác 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 biết về các thẻ này có thể giúp bạn xác định mã vấn đề trong trò chơi của mình. 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 đang thực hiện các tác 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ủ. Vào bất kỳ thời điểm nào, rất phổ biến cho hầu hết các luồng công nhân ở 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 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 không hợp lệ, vì điều này khiến cho những con đường đó cần phải được tính toán lại. Điều này được gây ra bởi việc di chuyển các phần không thể điều hướng. |
| computePath | Tính toán các đường đi, thường 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 con đường cho nhiều tác nhân nếu chúng được kỳ vọng 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 tác vụ raster hóa sẽ được thực thi bởi luồng tìm đường. | Giảm số lượng phần. |
Hoạt hình và người dạng
| Nhãn | Mô tả | Lời khuyên về hiệu suất |
|---|---|---|
| Simulation/gameStepped | Xử lý các đối tượng trong 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à di chuyển của Humanoid. | Giảm số lượng Humanoids hoặc tắt 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 callback cho Humanoid.StateChanged hoặc các thay đổi trạng thái như Running hoặc Died. |
| Simulation/gameStepped/stepAnimation | Animators sẽ bước tới 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 bớt khối lượng công việc của bước này. Giảm số lượng callback cho 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 khối lượng công việc của các hàm kết nối với sự kiện này. Xem xét trì hoãn hoặc thay thế các phép 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 â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 làm điều này trong những bước tăng dần. Có thể tăng lên 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 phiên bản mới. | Giảm số lượng thay đổi được sao chép đến mô hình dữ liệu. |
| Replicator SendCluster | Gửi dữ liệu Địa hình đế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 thiện 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 thiện của mô hình sẽ được gửi. | Thêm hoặc xóa ít phiên bản hơn. |
| deserializePacket | Xử lý gói mạng ở mức thấp. Chuẩn bị cho Replicator/ProcessPackets. | Gửi ít cập nhật hoặ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 | Thực hiện 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 với sự che khuất, bước này bao gồm việc xác định xem các đối tượng đó có hiển thị hay không. Điều này bao gồm các phần không trong suốt để hỗ trợ hình ảnh gỡ lỗi. | Giảm số lượng đối tượng được trang trí 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 nhìn thấy. |
| Prepare/Pass2d | Chuẩn bị kết xuất giao diện người dùng 2D (giao diện người dùng của người chơi và Roblox). | Giảm số lượng hoặc độ phức tạp của các yếu tố giao diện người dùng. |
| Prepare/UpdatePrepare/updateInvalidParts | Cập nhật các phần đã có thuộc tính thay đổi hoặ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 phân chia 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à các MeshParts đã được xương hóa. Các nhãn chỉ rõ số lượng phần, đỉnh và kích thước của đỉnh. | Giảm các thay đổi hình ảnh đối với các mô hình có Humanoids hoặc các MeshParts đã được xương hóa. |
| Prepare/UpdatePrepare/updateDynamicParts | Chuẩn bị các Beams, ParticleEmitters, và Humanoids cho việc kết xuất. | Giảm số lượng các Beams, ParticleEmitters, và Humanoids 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ỉ rõ số lượng đã được cập nhật. | Giảm công việc 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ể trợ giúp. |
| Perform | Khi các lệnh kết xuất thực tế được tạo và phát hành. | Xem các nhãn Perform bên dưới. |
| Perform/fillGuiVertices | Điền bộ đệm với đỉnh giao diện người dùng để chuẩn bị cho việc kết xuất. Nhãn gui count chỉ rõ số lượng của LayerCollectors 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 yếu tố giao diện người dùng chiếm. Nếu có quá nhiều nhãn Process GuiEffect, hãy xem xét 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 việc loại bỏ 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, điều đó có nghĩa là có nhiều yếu tố. Có lẽ sử dụng một số lưới lớn hơn mà một lưới đơn có nhiều chi tiết hơn so với nhiều mảnh nhỏ. |
| 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 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 cấp chất lượng thấp hơn. | Nếu việc cập nhật mức độ chiếm dụng khối mất quá nhiều thời gian, hãy xem xét việ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 cố định các phần. Nếu các nhãn khác mất quá nhiều thời gian, hãy xem xét giảm số lượng đèn và sử dụng hình học không tạo bóng cho những đối tượng chuyển động và làm mất hiệu lực mức độ chiếm dụng. |
| Perform/Scene/computeLightingPerform/ShadowMapSystem | Cập nhật bản đồ bóng. Không được thực hiện ở các cấp 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 tạo bóng trên các phiên bản không quan trọng. Xem Cải thiện hiệu suất. |
| Perform/Scene/Glow, ColorCorrection, MSAA, SSAO, và SSAOApply | Kết xuất 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 quan trọng. |
| Perform/Scene/UI | Kết xuất giao diện người dùng. 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 yếu tố giao diện người dùng nhìn thấy. Việc sử dụng CanvasGroups có thể giúp với giá phí tăng thêm về bộ nhớ. |
| Perform/Scene/UpdateView/updateParticles, updateParticleBoundings | Cập nhật vị trí và giới hạn hạt. | Giảm số lượng ParticleEmitters, tỷ lệ phát thải, thời gian sống, v.v. Giới hạn di chuyển 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ể nằm 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 hình decal trong cảnh. | Giảm việc sử dụng các hình decal trên các lưới 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 không kể đến độ trong suốt tạo bóng với giả định rằng chúng có chứa decal. Không được thực hiện ở các cấp chất lượng dưới 4. | Nếu bước này mất quá nhiều thời gian, hãy xem xét vô hiệu hóa BasePart.CastShadow cho các lưới phức tạp, các phần với độ trong suốt một phần cao và các phiên bả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 vô hiệu hóa BasePart.CastShadow. Xem Cải thiện hiệu suất. |
| Perform/Present | Chuyển tiếp vào 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 điều chỉnh điều này, nhưng nếu nó vẫn cao, hãy cố gắng làm theo lời khuyên về hiệu suất từ các nhãn Scene riêng lẻ. |
| LoadImage | Xử lý hình ảnh thành định dạng mà động cơ 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 làm càng ít việc càng tốt. |
| 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 làm càng ít việc càng tốt. |
| WaitingHybridScriptJob | Tiếp tục các kịch bản chờ bằ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ó ngân sách thời gian thực thi để chạy các kịch bản chờ. | Nếu bạn có quá nhiều kịch bản chờ hoặc các kịch bản với thời gian chạy dài trước khi tạm dừ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 hàm liên kết hoặc phép toán dài trong bước này. |
| GC | Chu kỳ thu gom rác của Luau. | Nhóm các bảng và các đối tượng có thể thu hồi khác hoặc cố gắng giảm việc tạo 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 khối lượng công việc của các hàm kết nối với sự kiện này. Xem xét trì hoãn hoặc thay thế các phép 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 đối với một số phiên bản nhất định như các phần. | Giảm số lượng các phần thường xuyên chuyển 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 tổ hợp) được sử dụng bởi động cơ vật lý. | Giảm số lượng khớp được tạo hoặc bị xóa. |
| 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 thân thể được mô phỏng vật lý. |
| Simulation/physicsSteppedTotal/physicsStepped/SpatialFilter/filterStep | Cập nhật các đảo mô phỏng, sắp xếp các phần theo quyền sở hữu mạng, mô phỏng địa phương. Các đả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 liên hệ giữa các đối tượng. | Giảm số lượng các thân thể va chạm cùng lúc, hoặc sử dụng các hộp va chạm đơn giản hơn. Các khối vuông tốt hơn so với các lưới 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 động cơ bị quá tải và không thể mô phỏng tất cả 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 "tổ hợp theo thời gian thực" như Humanoids được mô phỏng. | Phụ thuộc vào nơi thời gian đang đi dựa trên ba giai đoạn tiếp theo: stepContacts: kiểm tra hình học phát hiện va chạm hẹp. Solver step: tích hợp thời gian và giải quyết các va chạm và các ràng buộc khác updateBroadphase: cập nhật vị trí của các tổ hợp trong hệ thống phát hiện va chạm và tìm các cặp có khả năng va chạm trong giai đoạn hẹp. |
| notifyMovingAssemblies | Giúp theo dõi thời gian các nguyên tắc đã ngủ. | |
| Simulation/physicsSteppedTotal/physicsStepped/interpolateNetworkedAssemblies | Nội suy các tổ hợp không được kiểm soát bởi người chơi hiện tại. | Đặt quyền sở hữu mạng của các phần cho người chơi hiện tại để giảm điều này; mặc dù điều này thường sẽ làm tăng khối lượng công việc vật lý để làm ở 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 cho các tương tá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 khối lượng 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 qua nhiều liên hệ cùng 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 đối tượng. |
Giao diện người dùng
| 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 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 làm quá nhiều việc ngay khi nhận đầ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 phép 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 tween bằng cách sử dụng TweenService và gọi các callback hoàn thành, chẳng hạn như các callback được cung cấp cho GuiObject:TweenSize() hoặc GuiObject:TweenPosition(). | Giảm số lượng các đối tượng đang được tween sử dụng TweenService và đảm bảo các callback làm càng ít việc càng tốt. |
| Heartbeat/TweenService | Tại 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 tween sử dụng TweenService và đảm bảo các callback làm càng ít việc càng tốt. |
| Render/PreRender/UpdateUILayouts | Cập nhật vị trí và kích thước cho các phần tử giao diện người dùng trên tất cả các LayerCollectors được kích hoạt. | Xem các nhãn UpdateUILayouts bên dưới. |
| Render/PreRender/UpdateUILayouts/Rebuild Z-order list | Sắp xếp thứ tự Z của các phần tử giao diện người dùng (thuật ngữ nội bộ không nên nhầm lẫn với GuiObject.ZIndex) để ngăn chặn việc rách các phần tử giao diện người dùng. | Giảm số lượng các phần tử giao diện người dùng có cùng GuiObject.ZIndex. |
| Render/PreRender/UpdateUILayouts/Layout | Cập nhật vị trí và kích thước cho các phần tử giao diện người dùng trong một LayerCollector riêng lẻ. Có thể chứa một nhãn với thông tin về giao diện người dùng liên quan, cùng với số lượng Relayouts, Updates và Resizes. | Giảm số lượng các phần tử giao diện người dùng bị thay đổi kích thước hoặc định vị lại, chẳng hạn như những phần được quản lý bởi UILayout và những phần được tween bằng TweenService, GuiObject:TweenSize(), hoặc GuiObject:TweenPosition(). Cân nhắc sử dụng kích thước cố định cho BillboardGuis. |