OSDN Git Service

Fixed performance issue by moving buffer allocation outside loop.
authorFelipe Leme <felipeal@google.com>
Wed, 27 Jan 2016 01:07:14 +0000 (17:07 -0800)
committerFelipe Leme <felipeal@google.com>
Wed, 27 Jan 2016 01:21:28 +0000 (17:21 -0800)
Also improved logging.

BUG: 26637170
BUG: 26777547
Change-Id: I99511f3f71c58eba1f5539508f9a685d0a58cc58

cmds/dumpstate/dumpstate.cpp
cmds/dumpstate/utils.cpp

index 933f7fa..513e295 100644 (file)
@@ -357,6 +357,8 @@ static void print_header() {
 
 /* adds a new entry to the existing zip file. */
 static bool add_zip_entry_from_fd(const std::string& entry_name, int fd) {
+    DurationReporter duration_reporter(("ADD ZIP ENTRY " + entry_name).c_str());
+    ALOGD("Adding zip entry %s", entry_name.c_str());
     int32_t err = zip_writer->StartEntryWithTime(entry_name.c_str(),
             ZipWriter::kCompress, get_mtime(fd, now));
     if (err) {
@@ -364,8 +366,8 @@ static bool add_zip_entry_from_fd(const std::string& entry_name, int fd) {
         return false;
     }
 
+    std::vector<uint8_t> buffer(65536);
     while (1) {
-        std::vector<uint8_t> buffer(65536);
         ssize_t bytes_read = TEMP_FAILURE_RETRY(read(fd, buffer.data(), sizeof(buffer)));
         if (bytes_read == 0) {
             break;
@@ -413,7 +415,7 @@ void add_dir(const char *dir, bool recursive) {
 }
 
 static void dumpstate(const std::string& screenshot_path) {
-    std::unique_ptr<DurationReporter> duration_reporter(new DurationReporter("DUMPSTATE"));
+    DurationReporter duration_reporter("DUMPSTATE");
     unsigned long timeout;
 
     dump_dev_files("TRUSTY VERSION", "/sys/bus/platform/drivers/trusty", "trusty_version");
index e49d766..c043adc 100644 (file)
@@ -566,7 +566,6 @@ int run_command_always(const char *title, int timeout_seconds, const char *args[
     } else if (WIFEXITED(status) && WEXITSTATUS(status) > 0) {
         printf("*** %s: Exit code %d\n", command, WEXITSTATUS(status));
     }
-    if (title) printf("[%s: %.3fs elapsed]\n\n", command, (float)elapsed / NANOS_PER_SEC);
 
     if (weight > 0) {
         update_progress(weight);