[Gnucash-changes] Improve speed of generic importer.
Christian Stimming
cstim at cvs.gnucash.org
Sun Oct 16 08:52:13 EDT 2005
Log Message:
-----------
Improve speed of generic importer.
2005-10-16 Christian Stimming <stimming at tuhh.de>
* src/import-export/import-backend.c: Improve speed of general
importer.
Tags:
----
gnucash-gnome2-dev
Modified Files:
--------------
gnucash:
ChangeLog
gnucash/src/import-export:
import-backend.c
Revision Data
-------------
Index: ChangeLog
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/ChangeLog,v
retrieving revision 1.1487.2.343
retrieving revision 1.1487.2.344
diff -LChangeLog -LChangeLog -u -r1.1487.2.343 -r1.1487.2.344
--- ChangeLog
+++ ChangeLog
@@ -1,3 +1,8 @@
+2005-10-16 Christian Stimming <stimming at tuhh.de>
+
+ * src/import-export/import-backend.c: Improve speed of general
+ importer.
+
2005-10-16 Neil Williams <linux at codehelp.co.uk>
* src/bin/generate-gnc-script: Reversing Didier Vidal's
Index: import-backend.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/import-export/import-backend.c,v
retrieving revision 1.19.2.11
retrieving revision 1.19.2.12
diff -Lsrc/import-export/import-backend.c -Lsrc/import-export/import-backend.c -u -r1.19.2.11 -r1.19.2.12
--- src/import-export/import-backend.c
+++ src/import-export/import-backend.c
@@ -130,7 +130,7 @@
gnc_import_TransInfo_is_balanced (const GNCImportTransInfo *info)
{
g_assert (info);
- if(gnc_numeric_equal(xaccTransGetImbalance(gnc_import_TransInfo_get_trans(info)),gnc_numeric_zero()))
+ if(gnc_numeric_zero_p(xaccTransGetImbalance(gnc_import_TransInfo_get_trans(info))))
{
return TRUE;
}
@@ -282,6 +282,7 @@
gchar * red_color_str = g_strdup_printf("r c red");
gchar * black_color_str = g_strdup_printf("b c black");
gchar * xpm[2+num_colors+height];
+ gint add_threshold, clear_threshold;
g_assert(settings);
g_assert(widget);
@@ -302,7 +303,9 @@
xpm[3]=yellow_color_str;
xpm[4]=red_color_str;
xpm[5]=black_color_str;
-
+ add_threshold = gnc_import_Settings_get_add_threshold(settings);
+ clear_threshold = gnc_import_Settings_get_clear_threshold(settings);
+
for(i=0;i<height;i++)
{
xpm[num_colors+1+i]= g_new0(char,(width_each_bar*score)+width_first_bar+1);
@@ -325,11 +328,11 @@
{
strcat(xpm[num_colors+1+i],black_first_bar);
}
- else if (j<=gnc_import_Settings_get_add_threshold(settings))
+ else if (j <= add_threshold)
{
strcat(xpm[num_colors+1+i],red_bar);
}
- else if (j>=gnc_import_Settings_get_clear_threshold(settings))
+ else if (j >= clear_threshold)
{
strcat(xpm[num_colors+1+i],green_bar);
}
@@ -586,6 +589,7 @@
double downloaded_split_amount, match_split_amount;
time_t match_time, download_time;
int datediff_day;
+ Transaction *new_trans = gnc_import_TransInfo_get_trans (trans_info);
/* Matching heuristics */
@@ -596,9 +600,11 @@
/*DEBUG(" downloaded_split_amount=%f", downloaded_split_amount);*/
match_split_amount = gnc_numeric_to_double(xaccSplitGetAmount(split));
/*DEBUG(" match_split_amount=%f", match_split_amount);*/
- if(gnc_numeric_equal(xaccSplitGetAmount
- (gnc_import_TransInfo_get_fsplit (trans_info)),
- xaccSplitGetAmount(split)))
+ if(downloaded_split_amount == match_split_amount)
+ /*if (gnc_numeric_equal(xaccSplitGetAmount
+ (gnc_import_TransInfo_get_fsplit (trans_info)),
+ xaccSplitGetAmount(split)))
+ -- gnc_numeric_equal is an expensive function call */
{
prob = prob+3;
/*DEBUG("heuristics: probability + 3 (amount)");*/
@@ -623,8 +629,7 @@
/* Date heuristics */
match_time = xaccTransGetDate (xaccSplitGetParent (split));
- download_time =
- xaccTransGetDate (gnc_import_TransInfo_get_trans (trans_info));
+ download_time = xaccTransGetDate (new_trans);
datediff_day = abs(match_time - download_time)/86400;
/* Sorry, there are not really functions around at all that
provide for less hacky calculation of days of date
@@ -655,10 +660,9 @@
}
/* Check number heuristics */
- if(strlen(xaccTransGetNum(gnc_import_TransInfo_get_trans (trans_info)))!=0)
+ if(strlen(xaccTransGetNum(new_trans))!=0)
{
- if((strcmp(xaccTransGetNum
- (gnc_import_TransInfo_get_trans (trans_info)),
+ if((strcmp(xaccTransGetNum (new_trans),
xaccTransGetNum(xaccSplitGetParent(split)))
==0))
{
@@ -666,7 +670,7 @@
prob = prob+4;
/*DEBUG("heuristics: probability + 5 (Check number)");*/
}
- else if(strlen(xaccTransGetNum(gnc_import_TransInfo_get_trans (trans_info))) > 0 &&
+ else if(strlen(xaccTransGetNum(new_trans)) > 0 &&
strlen(xaccTransGetNum(xaccSplitGetParent(split))) > 0)
{
/* If both number are not empty yet do not match, add a little extre penality */
@@ -700,10 +704,9 @@
}
/* Description heuristics */
- if(strlen(xaccTransGetDescription(gnc_import_TransInfo_get_trans (trans_info)))!=0)
+ if(strlen(xaccTransGetDescription(new_trans))!=0)
{
- if((strcmp(xaccTransGetDescription
- (gnc_import_TransInfo_get_trans (trans_info)),
+ if((strcmp(xaccTransGetDescription (new_trans),
xaccTransGetDescription(xaccSplitGetParent(split)))
==0))
{
@@ -711,11 +714,9 @@
prob = prob+2;
/*DEBUG("heuristics: probability + 2 (description)");*/
}
- else if((strncmp(xaccTransGetDescription
- (gnc_import_TransInfo_get_trans (trans_info)),
- xaccTransGetDescription(xaccSplitGetParent(split)),
- strlen(xaccTransGetDescription
- (gnc_import_TransInfo_get_trans (trans_info)))/2)
+ else if((strncmp(xaccTransGetDescription (new_trans),
+ xaccTransGetDescription (xaccSplitGetParent(split)),
+ strlen(xaccTransGetDescription (new_trans))/2)
==0))
{
/* Very primitive fuzzy match worth +1. This matches the
More information about the gnucash-changes
mailing list