-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/120815/
-----------------------------------------------------------

(Updated Noie. 7, 2014, 7:06 p.m.)


Review request for KMymoney, Skrooge and Thomas Baumgart.


Changes
-------

Fixed static initialization issue (incorporated review 121030).


Summary (updated)
-----------------

Use implicit sharing in AlkValue.


Repository: alkimia


Description (updated)
-------

Before this the biggest cost of using an AlkValue object, implicitly
a KMyMoneyMoney object was assignment, construction and destruction.

By using implicit sharing combined with a shared zero value, copying
on assignment and construction can be greatly reduced.

Implicit sharing was easy to implement using QSharedDataPointer.

Bumped the library version because API changes were necessary. The
mpq_class &valueRef() const method was bad beacause it was returning
a non-const reference from a const function. Now There is a const
version which will not detach the shared data while the non-const
version will detach from the shared data.

REVIEW: 120815
REVIEW: 121030


Diffs (updated)
-----

  libalkimia/CMakeLists.txt 3dbe4db2d1d4ce6d324f7df947e3f284a40b492a 
  libalkimia/alkvalue.h 7c02403adc641d1acf44c65fec39c1435e54405b 
  libalkimia/alkvalue.cpp ae5d3a4ba61c4f0100d2598660ae76c432914d90 

Diff: https://git.reviewboard.kde.org/r/120815/diff/


Testing
-------

Succesfully ran KMyMoney and KMyMoney tests. See the attached screeshots for 
the callgrind data about AlkValue obtained while loading the same KMyMoney file 
without and with this change. Note that the second run also contains some 
MyMoneyMoney optimizations based on this feature (subject of a different review 
request).


File Attachments
----------------

Callgrind data using AlkValue from alkimia 4.3.2
  
https://git.reviewboard.kde.org/media/uploaded/files/2014/10/26/f79cfa4b-b01a-4d14-adbe-dc905ad1a4c9__alk-value.png
Callgrind data using AlkValue from alkimia 4.4.0 (with implicit sharing)
  
https://git.reviewboard.kde.org/media/uploaded/files/2014/10/26/ceb1cb24-fe5e-414e-a0c1-09746bcb9bcc__alk-value-implicitly-shared.png
Callgrind data while loading file by KMyMoney using review 120818 and alkimia 
4.3.2
  
https://git.reviewboard.kde.org/media/uploaded/files/2014/10/26/9d142707-962b-434a-b847-8af7154ff4a1__alk-value-4.3.2.png
Callgrind data while loading register by KMyMoney using review 120818 and 
alkimia 4.3.2
  
https://git.reviewboard.kde.org/media/uploaded/files/2014/10/26/25200104-be0e-434e-941d-c7c51c9bcb2c__register-load-4.3.2.png
Callgrind data while loading register by KMyMoney using review 120818 and 
alkimia 4.4.0
  
https://git.reviewboard.kde.org/media/uploaded/files/2014/10/26/58ee7a28-2723-4b2c-9818-e82b0b6a03e8__register-load-4.4.0.png
Callgrind data while editing transaction by KMyMoney using review 120818 and 
alkimia 4.3.2
  
https://git.reviewboard.kde.org/media/uploaded/files/2014/10/26/6f25d85b-3c3e-4d92-9f1a-1315daf3788c__transaction-edit-4.3.2.png
Callgrind data while editing transaction by KMyMoney using review 120818 and 
alkimia 4.4.0
  
https://git.reviewboard.kde.org/media/uploaded/files/2014/10/26/e4d5d50f-efb8-4f0b-bed8-23fa1c5db391__transaction-edit-4.4.0.png
Callgrind data while loading file by KMyMoney using review 120818 and alkimia 
4.4.0
  
https://git.reviewboard.kde.org/media/uploaded/files/2014/10/26/8808ebc3-a112-4425-b35e-05acd8ba94d1__alk-value-4.4.0.png


Thanks,

Cristian Oneț

_______________________________________________
KMyMoney-devel mailing list
KMyMoney-devel@kde.org
https://mail.kde.org/mailman/listinfo/kmymoney-devel

Reply via email to