Berikut adalah daftar tag umum di MicroProfiler, dikelompokkan berdasarkan kategori. Tag juga sering disebut sebagai tugas, timer, ruang lingkup, proses, dan label. Apa pun namanya, mereka mewakili unit kerja.
Memahami tag-tag ini dapat membantu Anda mengidentifikasi kode yang bermasalah dalam game Anda. Tabel-tabel tersebut berisi label tag, deskripsi, dan saran untuk meningkatkan kinerja serta mengoptimalkan game Anda.
Tidur
Ketika utas tidak secara aktif melakukan tugas, mereka masuk ke dalam keadaan tidur, dengan tag untuk menunjukkan berapa lama utas terbangun. Pada waktu tertentu, sangat umum bagi sebagian besar utas pekerja berada dalam keadaan tidur.
Navigasi
| Label | Deskripsi | Saran kinerja |
|---|---|---|
| rasterizeTile | Memperbarui tile navigasi yang diperlukan untuk permintaan pathfinding, biasanya diikuti oleh computePath yang memerlukan tile tersebut diperbarui. Mengikuti NavigationJob/preprocess di utas utama. | Kurangi jumlah invalidasi tile pathfinding, karena ini menyebabkan jalur tersebut perlu menghitung ulang. Hal ini disebabkan oleh bagian yang tidak dapat dinavigasi bergerak. |
| computePath | Menghitung jalur, biasanya setelah rasterizeTile. | Kurangi jumlah dan ekstensivitas dunia dari panggilan Path:ComputeAsync(). Cobalah untuk menggunakan jalur yang sama untuk beberapa agen jika mereka diperkirakan akan mulai/berakhir dari lokasi yang hampir sama. |
| preprocess/getPrimitivesOverlapping | Mengumpulkan geometri dunia untuk setiap tile pathfinding dan menjadwalkan tugas rasterisasi untuk dieksekusi oleh utas pathfinding. | Kurangi jumlah bagian yang ada. |
Animasi dan humanoid
| Label | Deskripsi | Saran kinerja |
|---|---|---|
| Simulation/gameStepped | Proses objek khusus game seperti Humanoids, Animations dan panggilan kembali detak jantung. | Lihat label gameStepped di bawah. |
| Simulation/gameStepped/stepHumanoid | Perubahan keadaan Humanoid dan gerakan. | Kurangi jumlah Humanoids atau nonaktifkan keadaan Humanoid pada NPC yang tidak membutuhkannya, seperti Climbing atau Swimming. Kurangi panggilan kembali ke Humanoid.StateChanged atau perubahan keadaan seperti Running atau Died. |
| Simulation/gameStepped/stepAnimation | Animators akan melangkah maju dalam animasi yang sedang dimainkan saat ini. | Kurangi jumlah Animators atau sendi yang dianimasikan untuk mengurangi beban kerja pada langkah ini. Kurangi jumlah panggilan kembali ke peristiwa animasi seperti AnimationTrack.KeyframeReached atau AnimationTrack.Ended |
| Simulation/gameStepped/RunService.Stepped | Menjalankan fungsi yang terhubung ke event RunService.Stepped. | Kurangi jumlah atau beban kerja fungsi yang terhubung ke event 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 putaran aktif. | Lihat label Sound di bawah. |
| Sound/stepInstances | Memperbarui volume suara aktif di workspace. | Kurangi jumlah suara dalam putaran aktif. |
Jaringan
| Label | Deskripsi | Saran kinerja |
|---|---|---|
| Net PacketReceive | Menerima paket jaringan. Jika banyak objek atau peristiwa sedang direplikasi, langkah ini memakan waktu lebih lama. | Replicate 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 secara 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 game. | Kurangi jumlah objek bergerak dan/atau sentuhan. Lihat bagian berikut. |
| Allocate Bandwidth and Run Senders/Dispatch StreamJob | Mengirim wilayah tertentu ke klien tertentu dalam fitur streaming. | Kurangi jari jari streaming minimum dan target. |
| Allocate Bandwidth and Run Senders/Dispatch Data Senders | Mengirim perubahan properti, pemanggilan peristiwa jarak jauh, perubahan keadaan Humanoid, perubahan keadaan 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 | Server hanya: completeness adalah konsep internal. Ketika model sepenuhnya dikirim, acara kelengkapan model dikirim. | Tambah atau kurangi lebih sedikit instance. |
| deserializePacket | Proses paket jaringan tingkat rendah. Mempersiapkan untuk Replicator/ProcessPackets. | Kirim lebih sedikit atau pembaruan yang lebih kecil. |
Render
| Label | Deskripsi | Saran kinerja |
|---|---|---|
| Prepare | Informasi dikumpulkan dari utas 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 occlusion, langkah ini mencakup raycasting untuk menentukan apakah objek tersebut visible. Ini termasuk bagian yang tidak 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 | Mempersiapkan rendering UI 2D (baik pemain maupun UI 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 skrip memperbarui sekumpulan besar properti objek, pisahkan di antara frame. |
| Prepare/UpdatePrepare/updateInvalidatedFastClusters | Mempersiapkan geometri "FastCluster" yang digunakan untuk merender Humanoids dan MeshParts yang diasah. Label menunjukkan jumlah bagian, vertex, dan ukuran vertex. | Kurangi perubahan visual pada model dengan Humanoids atau MeshParts yang diasah. |
| Prepare/UpdatePrepare/updateDynamicParts | Mempersiapkan 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 di 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 biayanya tinggi yang berarti ada banyak elemen. Mungkin gunakan beberapa mesh yang lebih besar di mana satu mesh memiliki lebih banyak detail sebagai ganti banyak bagian kecil individual. |
| Perform/Scene/computeLightingPerform | Perhitungan pencahayaan dekat kamera. | Manipulasi jumlah sumber cahaya atau gerakkan kamera lebih sedikit untuk mengurangi waktu yang diperlukan 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 mengunci bagian. Jika label lain memakan waktu terlalu lama, pertimbangkan untuk mengurangi jumlah lampu dan menggunakan geometri yang tidak memproyeksikan bayangan untuk objek yang bergerak dan menginvalidasi 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 proyeksi bayangan pada instance yang kurang penting. Lihat Meningkatkan kinerja. |
| Perform/Scene/Glow, ColorCorrection, MSAA, SSAO, and 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 mengorbankan penggunaan memori yang meningkat. |
| Perform/Scene/UpdateView/updateParticles, updateParticleBoundings | Memperbarui posisi dan batas partikel. | Kurangi jumlah ParticleEmitters, laju emisi, umur, dll. Batasi gerakan emitter. |
| Scene/Id_Opaque, RenderView/Id_Opaque | Bagian di dalam scene dengan transparansi keseluruhan 0.01 atau lebih rendah. | Kurangi penggunaan dan kepadatan bagian. |
| Scene/Id_Transparent, RenderView/Id_Transparent | Bagian di dalam scene dengan transparansi keseluruhan antara 0.01 dan 1. | Kurangi penggunaan transparansi parsial. |
| Scene/Id_Decals, RenderView/Id_Decals | Decals di dalam scene. | Kurangi penggunaan decals pada mesh yang kompleks. |
| Scene/Shadows | Perhitungan ulang bayangan dalam scene, biasanya dilakukan pada scene dinamis dan gameplay biasa. Bagian apa pun terlepas dari transparansi melempar bayangan dengan asumsi bahwa mereka mengandung decals. 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 tinggi, dan instance yang kurang penting. Bagian sepenuhnya transparan yang tidak memiliki decals atau tidak memerlukan bayangan decals harus memiliki BasePart.CastShadow dinonaktifkan. Lihat Meningkatkan kinerja. |
| Perform/Present | Meneruskan ke utas GPU untuk melaksanakan perintah rendering. | Kurangi kompleksitas scene secara umum. Jika langkah ini memakan waktu lama, Anda mungkin dibatasi oleh GPU. |
| Perform/Present/waitUntilCompleted | Menunggu GPU menyelesaikan rendering frame sebelumnya. | Jika ini sering terjadi, maka jumlah hal yang dirender terlalu tinggi. Pengelola Frame Rate membantu menyeimbangkan ini, tetapi jika tetap tinggi, cobalah mengikuti saran kinerja dari tag Scene individu. |
| LoadImage | Memproses gambar ke format yang dapat digunakan mesin. | Kurangi penggunaan gambar besar. |
Skrip
| Label | Deskripsi | Saran kinerja |
|---|---|---|
| Render/PreRender/fireBindToRenderSteppedCallbacks | Menjalankan fungsi yang terikat ke langkah render melalui RunService:BindToRenderStep(). | Pastikan fungsi yang terhubung ke event ini melakukan sedikit pekerjaan sebisa mungkin. |
| Render/PreRender/RunService.RenderStepped | Menjalankan fungsi yang terhubung ke event RunService.RenderStepped. | Pastikan fungsi yang terhubung ke event ini melakukan sedikit pekerjaan sebisa 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 runtuh yang panjang sebelum yielding, langkah ini diatur dan menunggu lebih lama sebelum dapat dijalankan lagi. Kurangi jumlah fungsi terikat atau perhitungan panjang dalam langkah ini. |
| GC | Siklus pengumpulan sampah Luau. | Kelompokkan tabel dan objek yang dapat dikumpulkan lainnya atau coba kurangi pembuatan tabel sementara. |
| Heartbeat/RunService.Heartbeat | Menjalankan fungsi yang terhubung ke event RunService.Heartbeat. | Kurangi jumlah atau beban kerja fungsi yang terhubung ke event ini. Pertimbangkan untuk menunda atau mengganti perhitungan yang mahal atau menyebarkan perhitungan di beberapa frame. |
Simulasi
| Label | Deskripsi | Saran kinerja |
|---|---|---|
| Kepemilikan Fisika Terdistribusi | 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 sambungan yang dibuat atau dihancurkan. |
| Simulation/physicsSteppedTotal/physicsStepped | Menjalankan simulasi fisika. | Kurangi jumlah dan kompleksitas badan yang disimulasikan secara fisik. |
| Simulation/physicsSteppedTotal/physicsStepped/SpatialFilter/filterStep | Memperbarui pulau simulasi, mengatur bagian sesuai kepemilikan jaringan, simulasi lokal. Pulau adalah kelompok bagian yang tidak saling berinteraksi yang dapat disimulasikan secara terpisah. | Hindari sering mengatur kepemilikan jaringan. Jaga kelompok-kelompok bagian agar 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 rumit. |
| Simulation/physicsSteppedTotal/physicsStepped/worldStep/stepWorld ATAU stepWorldThrottled | Menyelesaikan persamaan fisika yang berkaitan dengan penghubung, daya apung dan Humanoids. Ketika mesin kelebihan beban dan tidak dapat mensimulasikan semuanya secara waktu nyata, beberapa langkah mungkin dibatasi (stepWorldThrottled) dan hanya "perakitan waktu nyata" seperti Humanoids yang disimulasikan. | Bergantung pada di mana waktu sedang digunakan berdasarkan tiga fase berikut: stepContacts: menguji 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 | Menginterpolasi 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 ketinggian penghancuran atau kurangi jumlah bagian yang jatuh ke ketinggian penghancuran. |
| Heartbeat/heartbeatInternal/workspaceOnHeartbeat/updateVisuallySleeping | Bagian kedua dari notifyMovingAssemblies. | |
| Heartbeat/RunService.Heartbeat | Menjalankan fungsi yang terhubung ke event 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 secara langsung saat Anda mendapatkan input. Pertimbangkan untuk melakukan sedikit pemrosesan untuk input, dan perhitungan yang lebih besar harus didorong ke thread lain yang terjadi kemudian. |
| Render/PreRender/TweenService | Memperbarui objek yang sedang tween menggunakan TweenService dan memanggil panggilan kembali penyelesaian, seperti yang digunakan yang diberikan ke GuiObject:TweenSize() atau GuiObject:TweenPosition(). | Kurangi jumlah objek yang sedang tween menggunakan TweenService dan pastikan panggilan kembali melakukan sedikit pekerjaan sebisa mungkin. |
| Heartbeat/TweenService | Di server, TweenService berjalan di RunService.Heartbeat alih-alih RunService.PreRender. | Kurangi jumlah objek yang sedang tween menggunakan TweenService dan pastikan panggilan kembali melakukan sedikit pekerjaan sebisa 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 | Menyortir urutan Z elemen UI (istilah internal yang tidak boleh disamakan dengan GuiObject.ZIndex) untuk mencegah sobekan elemen UI. | Kurangi jumlah elemen UI dengan GuiObject.ZIndex yang sama. |
| 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, Updates, dan Resizes. | Kurangi jumlah elemen UI yang sedang 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. |