[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-kimageshop
Subject:    Re: slight speedup patch [1/2]
From:       Thomas Zander <zander () kde ! org>
Date:       2009-12-31 15:20:11
Message-ID: 200912311620.11659.zander () kde ! org
[Download RAW message or body]

On Thursday 31. December 2009 15.41.28 Thomas Zander wrote:
> for proof reading; a patch that avoids the usage of KoID if the 'name' part
>  of the id is ignored anyway.
> This should prove to be a small but useful speedup as we avoid a lot of
> copying of QString objects around.
> It also feels a bit cleaner ;)

Hmm, made a mistake on rebasing; the previous patch doesn't compile; here is a 
new one.
This change doesn't affect the other patch I sent.
-- 
Thomas Zander

["0001-Speedup-get-only-the-info-we-need-in-cases-where-we-.patch" (text/x-patch)]

From 511ad51d29a0e8b8a713b4f09de2011d76b5c2d6 Mon Sep 17 00:00:00 2001
From: Thomas Zander <zander@kde.org>
Date: Thu, 31 Dec 2009 12:06:04 +0100
Subject: [PATCH 1/3] Speedup; get only the info we need in cases where we don't use \
the name

---
 krita/image/tests/kis_histogram_test.cpp           |    6 +++---
 .../dockers/defaultdockers/histogramdock.cpp       |   12 +++++-------
 .../colorsfilters/kis_perchannel_filter.cpp        |    6 +++---
 .../paintops/libpaintop/kis_filter_option.cpp      |    8 ++++----
 krita/ui/kis_histogram_view.cc                     |   13 ++++++-------
 krita/ui/kis_histogram_view.h                      |    2 +-
 libs/pigment/KoHistogramProducer.cpp               |   10 +++++-----
 libs/pigment/KoHistogramProducer.h                 |    2 +-
 8 files changed, 28 insertions(+), 31 deletions(-)

diff --git a/krita/image/tests/kis_histogram_test.cpp \
b/krita/image/tests/kis_histogram_test.cpp index 22c87c6..0cbb058 100644
--- a/krita/image/tests/kis_histogram_test.cpp
+++ b/krita/image/tests/kis_histogram_test.cpp
@@ -29,9 +29,9 @@ void KisHistogramTest::testCreation()
 {
     const KoColorSpace * cs = KoColorSpaceRegistry::instance()->rgb8();
     KisPaintDeviceSP dev = new KisPaintDevice(cs);
-    QList<KoID> producers = \
                KoHistogramProducerFactoryRegistry::instance()->listKeysCompatibleWith(cs);
                
-    foreach(KoID id, producers) {
-        KoHistogramProducerSP producer = \
KoHistogramProducerFactoryRegistry::instance()->get(id.id())->generate(); +    \
QList<QString> producers = \
KoHistogramProducerFactoryRegistry::instance()->keysCompatibleWith(cs); +    foreach \
(const QString &id, producers) { +        KoHistogramProducerSP producer = \
KoHistogramProducerFactoryRegistry::instance()->get(id)->generate();  KisHistogram \
test(dev, producer, LINEAR);  }
 }
diff --git a/krita/plugins/extensions/dockers/defaultdockers/histogramdock.cpp \
b/krita/plugins/extensions/dockers/defaultdockers/histogramdock.cpp index \
                65dddf1..12cb947 100644
--- a/krita/plugins/extensions/dockers/defaultdockers/histogramdock.cpp
+++ b/krita/plugins/extensions/dockers/defaultdockers/histogramdock.cpp
@@ -159,10 +159,9 @@ void KisHistogramDocker::producerChanged(QAction *action)
     }
     m_producers.clear();
 
-    QList<KoID> keys = KoHistogramProducerFactoryRegistry::instance() ->
-                       listKeysCompatibleWith(m_cs);
+    QList<QString> keys = \
KoHistogramProducerFactoryRegistry::instance()->keysCompatibleWith(m_cs);  
-    m_factory = KoHistogramProducerFactoryRegistry::instance()->get(keys.at(pos).id());
 +    m_factory = KoHistogramProducerFactoryRegistry::instance()->get(keys.at(pos));
 
     KisCachedHistogramObserver observer(&m_producers, m_factory, 0, 0, 0, 0, false);
 
@@ -195,14 +194,13 @@ void KisHistogramDocker::colorSpaceChanged(const KoColorSpace* \
cs)  kDebug() << cs;
     m_cs = cs;
 
-    QList<KoID> keys = \
KoHistogramProducerFactoryRegistry::instance()->listKeysCompatibleWith(m_cs); +    \
QList<QString> keys = \
KoHistogramProducerFactoryRegistry::instance()->keysCompatibleWith(m_cs);  
     m_popup.clear();
     m_currentProducerPos = 0;
 
-    for (int i = 0; i < keys.count(); i++) {
-        KoID id(keys.at(i));
-        m_popup.addAction(id.name());
+    foreach (const QString &key, keys) {
+        m_popup.addAction(KoHistogramProducerFactoryRegistry::instance()->get(key)->name());
  }
 
     if (m_popup.actions().size() > 0) {
diff --git a/krita/plugins/filters/colorsfilters/kis_perchannel_filter.cpp \
b/krita/plugins/filters/colorsfilters/kis_perchannel_filter.cpp index \
                e493056..e990ad0 100644
--- a/krita/plugins/filters/colorsfilters/kis_perchannel_filter.cpp
+++ b/krita/plugins/filters/colorsfilters/kis_perchannel_filter.cpp
@@ -80,10 +80,10 @@ KisPerChannelConfigWidget::KisPerChannelConfigWidget(QWidget * \
parent, KisPaintD  m_page->vgradient->setPixmap(createGradient(Qt::Vertical));
 
     // init histogram calculator
-    QList<KoID> keys =
-        KoHistogramProducerFactoryRegistry::instance()->listKeysCompatibleWith(m_dev->colorSpace());
 +    QList<QString> keys =
+        KoHistogramProducerFactoryRegistry::instance()->keysCompatibleWith(m_dev->colorSpace());
  KoHistogramProducerFactory *hpf;
-    hpf = KoHistogramProducerFactoryRegistry::instance()->get(keys.at(0).id());
+    hpf = KoHistogramProducerFactoryRegistry::instance()->get(keys.at(0));
     m_histogram = new KisHistogram(m_dev, hpf->generate(), LINEAR);
 
     connect(m_page->curveWidget, SIGNAL(modified()), this, \
                SIGNAL(sigConfigurationItemChanged()));
diff --git a/krita/plugins/paintops/libpaintop/kis_filter_option.cpp \
b/krita/plugins/paintops/libpaintop/kis_filter_option.cpp index b20b0cb..a107cde \
                100644
--- a/krita/plugins/paintops/libpaintop/kis_filter_option.cpp
+++ b/krita/plugins/paintops/libpaintop/kis_filter_option.cpp
@@ -61,13 +61,13 @@ KisFilterOption::KisFilterOption()
     m_layout = new QGridLayout(m_options->grpFilterOptions);
 
     // Check which filters support painting
-    QList<KoID> l = KisFilterRegistry::instance()->listKeys();
+    QList<QString> l = KisFilterRegistry::instance()->keys();
     QList<KoID> l2;
-    QList<KoID>::iterator it;
+    QList<QString>::iterator it;
     for (it = l.begin(); it !=  l.end(); ++it) {
-        KisFilterSP f = KisFilterRegistry::instance()->value((*it).id());
+        KisFilterSP f = KisFilterRegistry::instance()->value((*it));
         if (f->supportsPainting()) {
-            l2.push_back(*it);
+            l2.push_back(KoID(*it, f->name()));
         }
     }
     m_options->filtersList->setIDList(l2);
diff --git a/krita/ui/kis_histogram_view.cc b/krita/ui/kis_histogram_view.cc
index cb1a5ac..dbb4bca 100644
--- a/krita/ui/kis_histogram_view.cc
+++ b/krita/ui/kis_histogram_view.cc
@@ -124,11 +124,11 @@ QStringList KisHistogramView::channelStrings()
     return m_channelStrings;
 }
 
-QList<KoID> KisHistogramView::listProducers()
+QList<QString> KisHistogramView::producers()
 {
     if (m_cs)
-        return KoHistogramProducerFactoryRegistry::instance()->listKeysCompatibleWith(m_cs);
                
-    return QList<KoID>();
+        return KoHistogramProducerFactoryRegistry::instance()->keysCompatibleWith(m_cs);
 +    return QList<QString>();
 }
 
 void KisHistogramView::setCurrentChannels(const KoID& producerID, \
QList<KoChannelInfo *> channels) @@ -235,16 +235,15 @@ void \
KisHistogramView::setChannels()  m_channels.clear();
     m_channelToOffset.clear();
 
-    QList<KoID> list = \
KoHistogramProducerFactoryRegistry::instance()->listKeysCompatibleWith(m_cs); +    \
QList<QString> list = \
KoHistogramProducerFactoryRegistry::instance()->keysCompatibleWith(m_cs);  
     if (list.count() == 0) {
         // XXX: No native histogram for this colorspace. Using converted RGB. We \
should have a warning  KoGenericRGBHistogramProducerFactory f;
         addProducerChannels(f.generate());
     } else {
-        for (int i = 0; i < list.count(); i++) {
-            KoID id(list.at(i));
-            addProducerChannels(KoHistogramProducerFactoryRegistry::instance()->value(id.id())->generate());
 +        foreach (const QString &id, list) {
+            addProducerChannels(KoHistogramProducerFactoryRegistry::instance()->value(id)->generate());
  }
     }
 
diff --git a/krita/ui/kis_histogram_view.h b/krita/ui/kis_histogram_view.h
index 86ae878..d9c8a18 100644
--- a/krita/ui/kis_histogram_view.h
+++ b/krita/ui/kis_histogram_view.h
@@ -74,7 +74,7 @@ public:
     QStringList channelStrings();
 
     /** Lists all producers currently available */
-    QList<KoID> listProducers();
+    QList<QString> producers();
 
     /** Sets the currently displayed channels to channels of the producer with \
                producerID as ID*/
     void setCurrentChannels(const KoID& producerID, QList<KoChannelInfo *> \
                channels);
diff --git a/libs/pigment/KoHistogramProducer.cpp \
b/libs/pigment/KoHistogramProducer.cpp index b8a35a8..bc4f42f 100644
--- a/libs/pigment/KoHistogramProducer.cpp
+++ b/libs/pigment/KoHistogramProducer.cpp
@@ -39,18 +39,18 @@ KoHistogramProducerFactoryRegistry* \
KoHistogramProducerFactoryRegistry::instance  
 }
 
-QList<KoID> KoHistogramProducerFactoryRegistry::listKeysCompatibleWith(
+QList<QString> KoHistogramProducerFactoryRegistry::keysCompatibleWith(
         const KoColorSpace* colorSpace) const
 {
-    QList<KoID> list;
+    QList<QString> list;
     QList<float> preferredList;
-    foreach(const KoID & id, listKeys()) {
-        KoHistogramProducerFactory *f = value(id.id());
+    foreach(const QString &id, keys()) {
+        KoHistogramProducerFactory *f = value(id);
         if (f->isCompatibleWith(colorSpace)) {
             float preferred = f->preferrednessLevelWith(colorSpace);
             QList<float>::iterator pit = preferredList.begin();
             QList<float>::iterator pend = preferredList.end();
-            QList<KoID>::iterator lit = list.begin();
+            QList<QString>::iterator lit = list.begin();
 
             while (pit != pend && preferred <= *pit) {
                 ++pit;
diff --git a/libs/pigment/KoHistogramProducer.h b/libs/pigment/KoHistogramProducer.h
index 89ca2a1..041c07e 100644
--- a/libs/pigment/KoHistogramProducer.h
+++ b/libs/pigment/KoHistogramProducer.h
@@ -117,7 +117,7 @@ public:
     virtual ~KoHistogramProducerFactoryRegistry();
     static KoHistogramProducerFactoryRegistry* instance();
     /// returns a list, sorted by preferrence: higher preferance comes first
-    QList<KoID> listKeysCompatibleWith(const KoColorSpace* colorSpace) const;
+    QList<QString> keysCompatibleWith(const KoColorSpace* colorSpace) const;
 
 private:
    KoHistogramProducerFactoryRegistry();
-- 
1.6.3.3



_______________________________________________
kimageshop mailing list
kimageshop@kde.org
https://mail.kde.org/mailman/listinfo/kimageshop


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic