Berikut adalah daftar tag umum dalam MicroProfiler, dikelompokkan berdasarkan kategori. Tag juga disebut secara bergantian sebagai tugas, timer, ruang lingkup, proses, dan label. Apa pun namanya, mereka mewakili unit kerja.
Memahami tag ini dapat membantu Anda mengidentifikasi kode bermasalah dalam permainan Anda. Tabel-tabel tersebut berisi label tag, deskripsi, dan saran untuk meningkatkan kinerja serta mengoptimalkan permainan Anda.
Tidur
Ketika thread tidak aktif melakukan tugas, mereka memasuki keadaan tidur, dengan tag untuk menunjukkan berapa lama thread tersebut tidur. Pada waktu tertentu, sangat umum bagi sebagian besar thread pekerja berada dalam keadaan tidur.
Navigasi
| Label | Deskripsi | Saran kinerja |
|---|---|---|
| rasterizeTile | Memperbarui ubin navigasi yang diperlukan untuk permintaan pencarian jalur, biasanya diikuti oleh computePath yang memerlukan ubin tersebut diperbarui. Mengikuti NavigationJob/preprocess di thread utama. | Kurangi jumlah invalidasi ubin pencarian jalur, karena ini menyebabkan jalur tersebut perlu dihitung ulang. Ini disebabkan oleh bagian yang tidak dapat dinavigasi bergerak. |
| computePath | Menghitung jalur, biasanya setelah rasterizeTile. | Kurangi jumlah dan luas dunia dari panggilan Path:ComputeAsync(). Cobalah untuk menggunakan kembali jalur untuk beberapa agen jika mereka diharapkan untuk mulai/berakhir dari lokasi yang kira-kira serupa. |
| preprocess/getPrimitivesOverlapping | Mengumpulkan geometri dunia untuk setiap ubin pencarian jalur dan menjadwalkan tugas rasterisasi untuk dieksekusi oleh thread pencarian jalur. | Kurangi jumlah bagian. |
Animasi dan humanoid
| Label | Deskripsi | Saran kinerja |
|---|---|---|
| Simulation/gameStepped | Proses objek spesifik permainan seperti Humanoids, Animations dan callback detak jantung. | Lihat label gameStepped di bawah. |
| Simulation/gameStepped/stepHumanoid | Perubahan status dan gerakan Humanoid. | Kurangi jumlah Humanoids atau nonaktifkan status Humanoid pada NPC yang tidak membutuhkannya, seperti Climbing atau Swimming. Kurangi callback ke Humanoid.StateChanged atau perubahan status seperti Running atau Died. |
| Simulation/gameStepped/stepAnimation | Animators akan melangkah maju dalam animasi yang sedang diputar. | Kurangi jumlah Animators atau sendi yang dianimasikan untuk mengurangi beban kerja langkah ini. Kurangi jumlah callback ke peristiwa animasi seperti AnimationTrack.KeyframeReached atau AnimationTrack.Ended |
| Simulation/gameStepped/RunService.Stepped | Menjalankan fungsi yang terhubung ke acara RunService.Stepped. | Kurangi jumlah atau beban kerja fungsi yang terhubung ke acara ini. Pertimbangkan untuk menunda atau mengganti perhitungan yang mahal atau menyebarkan perhitungan di beberapa frame. |
Audio
| Label | Deskripsi | Saran kinerja |
|---|---|---|
| Sound | Memproses simulasi akustik dan memperbarui suara dalam pemutaran aktif. | Lihat label Sound di bawah. |
| Sound/stepInstances | Memperbarui volume suara aktif di workspace. | Kurangi jumlah suara dalam pemutaran aktif. |
Jaringan
| Label | Deskripsi | Saran kinerja |
|---|---|---|
| Net PacketReceive | Menerima paket jaringan. Jika banyak objek atau peristiwa yang direplikasi, langkah ini memakan waktu lebih lama. | Replikasi lebih sedikit objek atau peristiwa. |
| Replicator/ProcessPackets | Memproses isi paket jaringan, seperti gerakan, pemanggilan peristiwa, dan perubahan properti. | Kurangi jumlah atau ukuran objek yang direplikasi, atau lakukan ini dalam langkah bertahap. Mungkin meningkat jika ukuran peta meningkat, karena peta yang lebih besar cenderung memiliki lebih banyak aktivitas secara keseluruhan. |
| Allocate Bandwidth and Run Senders/Dispatch Physics Senders and TouchSenders | Mengirim data tentang aktivitas dalam permainan. | Kurangi jumlah objek yang bergerak dan/atau sentuhan. Lihat bagian berikut. |
| Allocate Bandwidth and Run Senders/Dispatch StreamJob | Mengirim wilayah tertentu ke klien tertentu dalam fitur streaming. | Kurangi radius streaming minimum dan target. |
| Allocate Bandwidth and Run Senders/Dispatch Data Senders | Mengirim perubahan properti, pemanggilan peristiwa jarak jauh, perubahan status Humanoid, perubahan status animasi, dan replikasi instance baru. | Kurangi jumlah perubahan yang direplikasi ke model data. |
| Replicator SendCluster | Mengirim data Terrain ke klien. | Kurangi jumlah atau ukuran perubahan terrain. |
| ModelCompleteness Mega Job | Hanya server: kelengkapan adalah konsep internal. Ketika model sepenuhnya dikirim, peristiwa kelengkapan model dikirim. | Tambahkan atau hapus lebih sedikit instance. |
| deserializePacket | Proses paket jaringan tingkat rendah. Mempersiapkan untuk Replicator/ProcessPackets. | Kirim pembaruan yang lebih sedikit atau lebih kecil. |
Rendering
| Label | Deskripsi | Saran kinerja |
|---|---|---|
| Prepare | Informasi dikumpulkan dari thread utama dan memperbarui berbagai struktur data yang digunakan untuk rendering. | Lihat label Prepare di bawah. |
| Prepare/Pass3dAdorn | Menangani rendering berbagai hiasan objek, seperti label teks di atas objek. Untuk label Humanoid dengan okklusi, langkah ini mencakup raycasting untuk menentukan apakah objek tersebut terlihat. Ini termasuk bagian non-transparan untuk memfasilitasi visualisasi debug. | Kurangi jumlah objek berhias yang terlihat, seperti BillboardGuis, label nama/kesehatan Humanoid, dll. Kurangi jumlah bagian yang terlihat. |
| Prepare/Pass2d | Menyiapkan rendering UI 2D (baik UI pemain maupun Roblox). | Kurangi jumlah atau kompleksitas elemen UI. |
| Prepare/UpdatePrepare/updateInvalidParts | Memperbarui bagian yang memiliki beberapa properti yang diubah atau ditambahkan. | Kurangi jumlah perubahan properti di dunia. Jika sebuah skrip memperbarui sekumpulan besar properti objek, bagi menjadi beberapa frame. |
| Prepare/UpdatePrepare/updateInvalidatedFastClusters | Menyiapkan geometri "FastCluster" yang digunakan untuk merender Humanoids dan MeshParts yang dijilid. Label menunjukkan jumlah bagian, verteks, dan ukuran verteks. | Kurangi perubahan visual pada model dengan Humanoids atau MeshParts yang dijilid. |
| Prepare/UpdatePrepare/updateDynamicParts | Menyiapkan Beams, ParticleEmitters, dan Humanoids untuk rendering. | Kurangi jumlah Beams, ParticleEmitters, dan Humanoids yang terlihat. |
| Prepare/UpdatePrepare/updateInstancedClusters | Memperbarui geometri yang menggunakan rendering instanced seperti bagian. Label Clusters dan Instances menunjukkan jumlah yang diperbarui. | Kurangi pekerjaan yang secara implisit memperbarui bounding box bagian, seperti BasePart.CFrame, BasePart.Size, atau Motor6D.Transform. Pembaruan properti kreatif seperti Bone.Transform dapat membantu. |
| Perform | Ketika perintah rendering yang sebenarnya dibuat dan dikeluarkan. | Lihat label Perform di bawah. |
| Perform/fillGuiVertices | Mengisi buffer dengan vertex UI untuk mempersiapkan rendering. Label gui count menunjukkan jumlah LayerCollectors yang terlihat dalam frame. | Jika biayanya tinggi, kurangi jumlah, kepadatan, dan ruang yang diambil oleh elemen UI. Jika ada terlalu banyak label Process GuiEffect, pertimbangkan untuk mengurangi penggunaan UIGradient dan UICorner pada label teks. |
| Perform/Scene/queryFrustumOrdered | Menerapkan frustum culling sehingga objek yang tidak terlihat tidak dirender. | Jika ada biaya tinggi, itu berarti ada banyak elemen. Mungkin gunakan beberapa mesh yang lebih besar di mana satu mesh memiliki lebih banyak detail dibandingkan dengan banyak potongan kecil. |
| Perform/Scene/computeLightingPerform | Perhitungan pencahayaan dekat kamera. | Manipulasi jumlah sumber cahaya atau gerakkan kamera lebih sedikit untuk mengurangi waktu yang dibutuhkan untuk menghitung ulang pencahayaan. |
| Perform/Scene/computeLightingPerform/LightGridCPU | Memperbarui pencahayaan voxel, yang digunakan pada tingkat kualitas yang lebih rendah. | Jika memperbarui okupansi chunk memakan waktu terlalu lama, pertimbangkan untuk menggunakan geometri resolusi lebih rendah, mengurangi jumlah bagian, atau menambatkan bagian. Jika label lainnya memakan waktu terlalu lama, pertimbangkan untuk mengurangi jumlah lampu dan menggunakan geometri yang tidak memancarkan bayangan untuk objek yang bergerak dan membatalkan okupansi. |
| Perform/Scene/computeLightingPerform/ShadowMapSystem | Memperbarui peta bayangan. Tidak dilakukan pada tingkat kualitas di bawah 4. | Kurangi jumlah lampu. Anda juga dapat menggunakan Light.Shadows dan BasePart.CastShadow untuk menonaktifkan pemancaran bayangan pada instance yang kurang penting. Lihat Tingkatkan kinerja. |
| Perform/Scene/Glow, ColorCorrection, MSAA, SSAO, dan SSAOApply | Rendering pasca-proses. | Kurangi jumlah efek pasca-proses. Biasanya ini tidak signifikan. |
| Perform/Scene/UI | Rendering UI. Di Id_Screen, ada label dengan jumlah batch, material, dan segitiga yang digunakan. | Kurangi jumlah elemen UI yang terlihat. Menggunakan CanvasGroups dapat membantu dengan biaya penggunaan memori yang meningkat. |
| Perform/Scene/UpdateView/updateParticles, updateParticleBoundings | Memperbarui posisi dan batas partikel. | Kurangi jumlah ParticleEmitters, laju emisi, umur, dll. Batasi gerakan pemancar. |
| Scene/Id_Opaque, RenderView/Id_Opaque | Bagian dalam adegan dengan transparansi keseluruhan 0.01 atau lebih rendah. | Kurangi penggunaan dan kepadatan bagian. |
| Scene/Id_Transparent, RenderView/Id_Transparent | Bagian dalam adegan dengan transparansi keseluruhan antara 0.01 dan 1. | Kurangi penggunaan transparansi parsial. |
| Scene/Id_Decals, RenderView/Id_Decals | Decal dalam adegan. | Kurangi penggunaan decal pada mesh yang kompleks. |
| Scene/Shadows | Perhitungan ulang bayangan dalam adegan, biasanya dilakukan pada adegan dinamis dan gameplay yang khas. Bagian terlepas dari transparansi memancarkan bayangan dengan asumsi bahwa mereka mengandung decal. Tidak dilakukan pada tingkat kualitas di bawah 4. | Jika langkah ini memakan waktu terlalu lama, pertimbangkan untuk menonaktifkan BasePart.CastShadow untuk mesh yang kompleks, bagian dengan transparansi parsial yang tinggi, dan instance yang kurang penting. Bagian yang sepenuhnya transparan yang tidak memiliki decal atau tidak memerlukan bayangan decal harus menonaktifkan BasePart.CastShadow. Lihat Tingkatkan kinerja. |
| Perform/Present | Meneruskan ke thread GPU untuk melakukan perintah rendering. | Kurangi kompleksitas adegan secara umum. Jika langkah ini memakan waktu lama, Anda mungkin dibatasi oleh GPU. |
| Perform/Present/waitUntilCompleted | Menunggu GPU menyelesaikan rendering frame sebelumnya. | Jika ini biasanya terjadi banyak, maka jumlah hal yang dirender terlalu tinggi. Manajer Frame Rate membantu dengan menyeimbangkan ini, tetapi jika tetap tinggi, coba ikuti saran kinerja dari tag Scene individu. |
| LoadImage | Memproses gambar menjadi format yang dapat digunakan oleh mesin. | Kurangi penggunaan gambar besar. |
Skrip
| Label | Deskripsi | Saran kinerja |
|---|---|---|
| Render/PreRender/fireBindToRenderSteppedCallbacks | Menjalankan fungsi yang terikat pada langkah render melalui RunService:BindToRenderStep(). | Pastikan fungsi yang terhubung ke acara ini melakukan pekerjaan sesedikit mungkin. |
| Render/PreRender/RunService.RenderStepped | Menjalankan fungsi yang terhubung ke acara RunService.RenderStepped. | Pastikan fungsi yang terhubung ke acara ini melakukan pekerjaan sesedikit mungkin. |
| WaitingHybridScriptJob | Melanjutkan skrip yang menunggu menggunakan Instance:WaitForChild() atau Globals.Roblox.wait(). Biasanya dilakukan 30 kali per detik. Langkah ini memiliki anggaran waktu eksekusi untuk menjalankan skrip yang menunggu. | Jika Anda memiliki terlalu banyak skrip yang menunggu atau skrip dengan waktu eksekusi yang lama sebelum yield, langkah ini dibatasi dan menunggu lebih lama sebelum dapat dijalankan lagi. Kurangi jumlah fungsi terikat atau perhitungan panjang dalam langkah ini. |
| GC | Siklus pengumpulan sampah Luau. | Kolam tabel dan objek yang dapat dikumpulkan lainnya atau coba kurangi pembuatan tabel sementara. |
| Heartbeat/RunService.Heartbeat | Menjalankan fungsi yang terhubung ke acara RunService.Heartbeat. | Kurangi jumlah atau beban kerja fungsi yang terhubung ke acara ini. Pertimbangkan untuk menunda atau mengganti perhitungan yang mahal atau menyebarkan perhitungan di beberapa frame. |
Simulasi
| Label | Deskripsi | Saran kinerja |
|---|---|---|
| Distributed Physics Ownership | Menentukan apakah server atau klien memiliki otoritas atas instance tertentu seperti bagian. | Kurangi jumlah bagian yang sering beralih kepemilikan jaringan, terutama yang memiliki interaksi umum. |
| Simulation/assemble | Memperbarui pohon objek yang terhubung (perakitan) yang digunakan oleh mesin fisika. | Kurangi jumlah sendi yang dibuat atau dihancurkan. |
| Simulation/physicsSteppedTotal/physicsStepped | Menjalankan simulasi fisika. | Kurangi jumlah dan kompleksitas tubuh yang disimulasikan secara fisik. |
| Simulation/physicsSteppedTotal/physicsStepped/SpatialFilter/filterStep | Memperbarui pulau simulasi, mengatur bagian sesuai dengan kepemilikan jaringan, simulasi lokal. Pulau adalah kelompok bagian yang tidak berinteraksi yang dapat disimulasikan secara independen. | Hindari mengatur kepemilikan jaringan secara sering. Jauhkan kelompok bagian cukup jauh satu sama lain sehingga mereka dapat disimulasikan secara terpisah. |
| Simulation/physicsSteppedTotal/physicsStepped/worldStep/stepContacts | Memperbarui kontak antara objek. | Kurangi jumlah tubuh yang bertabrakan sekaligus, atau gunakan kotak tabrakan yang lebih sederhana. Kubus lebih baik daripada mesh yang kompleks. |
| Simulation/physicsSteppedTotal/physicsStepped/worldStep/stepWorld ATAU stepWorldThrottled | Menyelesaikan persamaan fisika yang berkaitan dengan konektor, daya apung, dan Humanoids. Ketika mesin kelebihan beban dan tidak dapat mensimulasikan semuanya secara real-time, beberapa langkah mungkin dibatasi (stepWorldThrottled) dan hanya "perakitan waktu nyata" seperti Humanoids yang disimulasikan. | Tergantung pada di mana waktu digunakan berdasarkan tiga fase berikut: stepContacts: pengujian geometri deteksi tabrakan fase sempit. Solver step: mengintegrasikan waktu dan menyelesaikan tabrakan dan batasan lainnya updateBroadphase: memperbarui posisi perakitan dalam sistem deteksi tabrakan dan menemukan pasangan fase sempit yang mungkin bertabrakan. |
| notifyMovingAssemblies | Membantu melacak berapa lama primitif telah tidur. | |
| Simulation/physicsSteppedTotal/physicsStepped/interpolateNetworkedAssemblies | Interpolasi perakitan yang tidak dikendalikan oleh pemain saat ini. | Atur pemilik jaringan bagian ke pemain saat ini untuk mengurangi ini; meskipun ini biasanya akan menyebabkan lebih banyak pekerjaan fisika dilakukan di tempat lain. |
| Simulation/handleFallenParts | Menghapus bagian yang telah jatuh di bawah Workspace.FallenPartsDestroyHeight. | Turunkan tinggi penghancuran atau kurangi jumlah bagian yang jatuh ke tinggi penghancuran. |
| Heartbeat/heartbeatInternal/workspaceOnHeartbeat/updateVisuallySleeping | Bagian kedua dari notifyMovingAssemblies. | |
| Heartbeat/RunService.Heartbeat | Menjalankan fungsi yang terhubung ke acara RunService.Heartbeat untuk simulasi dan kontak skrip. Deskripsi saat ini cukup umum untuk tidak salah. | Kurangi jumlah atau beban kerja fungsi yang terhubung ke RunService.Heartbeat. |
| worldStep/stepContacts | Membantu langkah simulasi fisika banyak kontak sekaligus. | Kurangi jumlah objek yang bertabrakan. |
| SolveBatch | Membantu simulasi fisika menyelesaikan batch gerakan objek. |
UI
| Label | Deskripsi | Saran kinerja |
|---|---|---|
| Render/PreRender/UpdateInput | Memperbarui dan memicu semua peristiwa terkait input pengguna jika pengguna telah melakukan input sejak frame terakhir. | Cobalah untuk tidak melakukan terlalu banyak pekerjaan langsung saat Anda mendapatkan input. Pertimbangkan untuk melakukan pemrosesan minimal untuk input, dan perhitungan yang lebih besar harus ditunda ke thread lain yang terjadi kemudian. |
| Render/PreRender/TweenService | Memperbarui objek yang sedang tweened menggunakan TweenService dan memanggil callback penyelesaian, seperti yang digunakan yang diberikan kepada GuiObject:TweenSize() atau GuiObject:TweenPosition(). | Kurangi jumlah objek yang sedang tweened menggunakan TweenService dan pastikan callback melakukan pekerjaan sesedikit mungkin. |
| Heartbeat/TweenService | Di server, TweenService berjalan di RunService.Heartbeat alih-alih RunService.PreRender. | Kurangi jumlah objek yang sedang tweened menggunakan TweenService dan pastikan callback melakukan pekerjaan sesedikit mungkin. |
| Render/PreRender/UpdateUILayouts | Memperbarui posisi dan ukuran untuk elemen UI di semua LayerCollectors yang diaktifkan. | Lihat label UpdateUILayouts di bawah. |
| Render/PreRender/UpdateUILayouts/Rebuild Z-order list | Membangun kembali daftar urutan Z internal elemen UI (tidak boleh bingung dengan GuiObject.ZIndex) dalam LayerCollector pada render pertama atau ketika elemen baru ditambahkan, dihapus, atau memiliki GuiObject.ZIndex yang diubah. | Kurangi jumlah elemen UI dalam LayerCollectors sebelum render pertama dan hindari sering mengubah induk dan GuiObject.ZIndex elemen UI di dalamnya. Semakin banyak elemen yang dimiliki LayerCollector, semakin buruk kinerjanya. |
| Render/PreRender/UpdateUILayouts/Layout | Memperbarui posisi dan ukuran untuk elemen UI dalam LayerCollector individu. Dapat berisi label dengan informasi tentang UI yang relevan, bersama dengan jumlah Relayouts, Pembaruan, dan Ukuran Ulang. | Kurangi jumlah elemen UI yang diubah ukuran atau dipindahkan, seperti yang dikelola oleh UILayout dan yang tweened dengan TweenService, GuiObject:TweenSize(), atau GuiObject:TweenPosition(). Pertimbangkan untuk menggunakan ukuran tetap untuk BillboardGuis. |