Jelajahi Sumber

LibCore: Use JsonObject::get_ptr() in CProcessStatisticsReader

This removes a bunch of JsonValue copying from the hot path in thread
statistics fetching.

Also pre-size the thread statistics vector since we know the final size
up front. :^)
Andreas Kling 5 tahun lalu
induk
melakukan
1b2c6e8f41
1 mengubah file dengan 2 tambahan dan 1 penghapusan
  1. 2 1
      Libraries/LibCore/CProcessStatisticsReader.cpp

+ 2 - 1
Libraries/LibCore/CProcessStatisticsReader.cpp

@@ -44,7 +44,8 @@ HashMap<pid_t, CProcessStatistics> CProcessStatisticsReader::get_all()
         process.amount_purgeable_nonvolatile = process_object.get("amount_purgeable_nonvolatile").to_u32();
         process.amount_purgeable_nonvolatile = process_object.get("amount_purgeable_nonvolatile").to_u32();
         process.icon_id = process_object.get("icon_id").to_int();
         process.icon_id = process_object.get("icon_id").to_int();
 
 
-        auto thread_array = process_object.get("threads").as_array();
+        auto& thread_array = process_object.get_ptr("threads")->as_array();
+        process.threads.ensure_capacity(thread_array.size());
         thread_array.for_each([&](auto& value) {
         thread_array.for_each([&](auto& value) {
             auto& thread_object = value.as_object();
             auto& thread_object = value.as_object();
             CThreadStatistics thread;
             CThreadStatistics thread;