]> git.saurik.com Git - cydia.git/commitdiff
Various performance disprovements (just scattered the time around, didn't actually...
authorJay Freeman (saurik) <saurik@saurik.com>
Tue, 6 May 2008 22:40:06 +0000 (22:40 +0000)
committerJay Freeman (saurik) <saurik@saurik.com>
Thu, 30 Sep 2010 07:08:01 +0000 (07:08 +0000)
Cydia.mm
makefile

index 81a3e7b73ae2974bbaf327e37f0739d81b7c3bf1..d415970e499470363882e8e3bc26da5a5bb6b7fc 100644 (file)
--- a/Cydia.mm
+++ b/Cydia.mm
@@ -358,6 +358,7 @@ bool restart_;
 
 static NSMutableDictionary *Metadata_;
 static NSMutableDictionary *Packages_;
+static bool Changed_;
 static NSDate *now_;
 
 NSString *GetLastUpdate() {
@@ -748,7 +749,9 @@ NSString *Scour(const char *field, const char *begin, const char *end) {
     _transient Database *database_;
     pkgCache::VerIterator version_;
     pkgCache::VerFileIterator file_;
+
     Source *source_;
+    bool cached_;
 
     NSString *latest_;
     NSString *installed_;
@@ -804,6 +807,9 @@ NSString *Scour(const char *field, const char *begin, const char *end) {
 @implementation Package
 
 - (void) dealloc {
+    if (source_ != nil)
+        [source_ release];
+
     [latest_ release];
     if (installed_ != nil)
         [installed_ release];
@@ -817,8 +823,6 @@ NSString *Scour(const char *field, const char *begin, const char *end) {
     if (website_ != nil)
         [website_ release];
 
-    [source_ release];
-
     [super dealloc];
 }
 
@@ -830,14 +834,14 @@ NSString *Scour(const char *field, const char *begin, const char *end) {
         version_ = version;
         file_ = file;
 
+        latest_ = [[NSString stringWithCString:version_.VerStr()] retain];
+        installed_ = iterator_.CurrentVer().end() ? nil : [[NSString stringWithCString:iterator_.CurrentVer().VerStr()] retain];
+
         pkgRecords::Parser *parser = &[database_ records]->Lookup(file_);
 
         const char *begin, *end;
         parser->GetRec(begin, end);
 
-        latest_ = [[NSString stringWithCString:version_.VerStr()] retain];
-        installed_ = iterator_.CurrentVer().end() ? nil : [[NSString stringWithCString:iterator_.CurrentVer().VerStr()] retain];
-
         id_ = [[[NSString stringWithCString:iterator_.Name()] lowercaseString] retain];
         name_ = Scour("Name", begin, end);
         if (name_ != nil)
@@ -850,8 +854,6 @@ NSString *Scour(const char *field, const char *begin, const char *end) {
         if (website_ != nil)
             website_ = [website_ retain];
 
-        source_ = [[database_ getSource:file_.File()] retain];
-
         NSMutableDictionary *metadata = [Packages_ objectForKey:id_];
         if (metadata == nil || [metadata count] == 0) {
             metadata = [NSMutableDictionary dictionaryWithObjectsAndKeys:
@@ -859,6 +861,7 @@ NSString *Scour(const char *field, const char *begin, const char *end) {
             nil];
 
             [Packages_ setObject:metadata forKey:id_];
+            Changed_ = true;
         }
     } return self;
 }
@@ -960,6 +963,11 @@ NSString *Scour(const char *field, const char *begin, const char *end) {
 }
 
 - (Source *) source {
+    if (!cached_) {
+        source_ = [[database_ getSource:file_.File()] retain];
+        cached_ = true;
+    }
+
     return source_;
 }
 
@@ -1396,6 +1404,7 @@ NSString *Scour(const char *field, const char *begin, const char *end) {
         }
 
         [Metadata_ setObject:[NSDate date] forKey:@"LastUpdate"];
+        Changed_ = true;
     }
 }
 
@@ -2286,6 +2295,7 @@ void AddTextView(NSMutableDictionary *fields, NSMutableArray *packages, NSString
         if (list != nil) {
             [files_ addObjectsFromArray:[list componentsSeparatedByString:@"\n"]];
             [files_ removeLastObject];
+            [files_ sortUsingSelector:@selector(compare:)];
         }
     }
 
@@ -3861,10 +3871,8 @@ void AddTextView(NSMutableDictionary *fields, NSMutableArray *packages, NSString
 
     [database_ reloadData];
 
-    size_t count = 16;
-
     if (Packages_ == nil) {
-        Packages_ = [[NSMutableDictionary alloc] initWithCapacity:count];
+        Packages_ = [[NSMutableDictionary alloc] initWithCapacity:128];
         [Metadata_ setObject:Packages_ forKey:@"Packages"];
     }
 
@@ -3890,7 +3898,10 @@ void AddTextView(NSMutableDictionary *fields, NSMutableArray *packages, NSString
         [self removeApplicationBadge];
     }
 
-    _assert([Metadata_ writeToFile:@"/var/lib/cydia/metadata.plist" atomically:YES] == YES);
+    if (Changed_) {
+        _assert([Metadata_ writeToFile:@"/var/lib/cydia/metadata.plist" atomically:YES] == YES);
+        Changed_ = false;
+    }
 
     /* XXX: this is just stupid */
     if (tag_ != 2)
@@ -3903,6 +3914,7 @@ void AddTextView(NSMutableDictionary *fields, NSMutableArray *packages, NSString
         [search_ reloadData];
 
     [book_ reloadData];
+
     /*[hud show:NO];
     [hud removeFromSuperview];*/
 }
index c678b0d543bf4495ba111ba854619ca32f7b27e3..21674a8736862e7b1a69f6b757163145e17a9744 100644 (file)
--- a/makefile
+++ b/makefile
@@ -13,6 +13,6 @@ exec: exec.mm makefile
        $(target)g++ -Wall -Werror -o $@ $< -framework Foundation -framework CoreFoundation -lobjc
 
 Cydia: Cydia.mm ../uicaboodle.m/*.mm *.h makefile
-       $(target)g++ -I../uicaboodle.m -fobjc-call-cxx-cdtors -g3 -O2 -Wall -Werror -o $@ $(filter %.mm,$^) -framework UIKit -framework IOKit -framework CoreFoundation -framework Foundation -framework CoreGraphics -framework GraphicsServices -framework LayerKit -lobjc -lapt-pkg -lpcre -fobjc-exceptions -I/apl/i20 -F$${PKG_ROOT}/System/Library/PrivateFrameworks
+       $(target)g++ -I../uicaboodle.m -fobjc-call-cxx-cdtors -g0 -O2 -Wall -Werror -o $@ $(filter %.mm,$^) -framework UIKit -framework IOKit -framework CoreFoundation -framework Foundation -framework CoreGraphics -framework GraphicsServices -framework LayerKit -lobjc -lapt-pkg -lpcre -fobjc-exceptions -I/apl/i20 -F$${PKG_ROOT}/System/Library/PrivateFrameworks
 
 .PHONY: all clean