Skip to content

Conversation

@tobiasdiez
Copy link
Member

Improve performance by:

  • Caching fields as KeywordList
  • Remove duplicate change listener
  • Remove preference access in loop

With these changes, the mega huge library of @AEgit works without too much delays (the initial loading of the database is a bit slow but still ok). Thus, this PR is a potential fix for #4430 and for #5071.


  • Change in CHANGELOG.md described
  • Tests created for changes
  • Manually tested changed features in running JabRef
  • Screenshots added in PR description (for bigger UI changes)
  • Ensured that the git commit message is a good one
  • Check documentation status (Issue created for outdated help page at help.jabref.org?)

Improve performance by:
- Caching fields as KeywordList
- Remove duplicate change listener
- Remove preference access in loop
@tobiasdiez tobiasdiez added the status: ready-for-review Pull Requests that are ready to be reviewed by the maintainers label Oct 28, 2019
Copy link
Member

@koppor koppor left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks OK. I like Google Guava - therefore, I commented it at two places.

}

public KeywordList getFieldAsKeywords(Field field, Character keywordSeparator) {
Optional<KeywordList> storedList = fieldsAsKeywords.get(field, keywordSeparator);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can't you use Google Guava's Cache? 😇 Maybe, with Eclipse Collections Twin

LoadingCache<Pair<Field, Character>, KeywordList> storedKeywordList = CacheBuilder.newBuilder()
  .build(new CacheLoader<Pair<Field, Character>, KeywordList>() {
    @Override
    public String load(final Pair<Field, Character> pair) throws Exception {
      return getField(pair.getOne().map(... pair.getTwo());
    }
});
return storedKeywordList.get(Tuples.pair(field, keywordSeparator));

OK, invalidation is worse (as it is not possible to invalidate all pairs having the same first value (easily)).

storedKeywordList.invalidateAll();

(I now that Tuples.pair(...) might be slower than your approach. Howver, I would like that the cache can be tweaked ^^).

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That looks complicated 😄 https://github.com/google/guava/wiki/CachesExplained#applicability has the nice explanation

Note: If you do not need the features of a Cache, ConcurrentHashMap is more memory-efficient -- but it is extremely difficult or impossible to duplicate most Cache features with any old ConcurrentMap.

I guess we do not need these cache features (but I've also never worked with Guave Caches...so I cannot appreciate them).

latexFreeFields.put(field, typeName);
return Optional.of(typeName);
return Optional.of(type.get().getDisplayName());
} else if (latexFreeFields.containsKey(field)) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This could also be a good place for Guava's Cache.

@AEgit
Copy link

AEgit commented Oct 29, 2019

@tobiasdiez Wonderful! Let me know, when I can start testing this fix.

@koppor koppor merged commit f88fc31 into master Oct 29, 2019
@koppor koppor deleted the improvePerf branch October 29, 2019 20:38
koppor pushed a commit that referenced this pull request Jul 15, 2021
176997d Update veterinary-pathology.csl (#5554)
ee035c1 Update mycologia.csl (#5555)
eb4b3a6 Create international-journal-of-automotive-technology.csl (#5557)
3c4e727 Bump addressable from 2.7.0 to 2.8.0 (#5558)
ccb81c8 Create szociologiai-szemle.csl (#5547)
ed9d740 Update brain.csl to ama.csl dependent (#5546)
ab499f2 Create iran-manual-style (#5350)
6e2b13c Update and rename dependent/estuaries-and-coasts.csl to estuaries-and-coasts.csl (#5534)
8441ff9 Create fachhochschule-suedwestfalen.csl (#5459)
8439cf4 Create freie-hochschule-stuttgart.csl (#5466)
076c513 Update midwestern-baptist-theological-seminary.csl (#5420)
350b900 Update veterinary-pathology.csl (#5543)
06261c0 Create United States International Trade Commission.csl (#5508)
7ae505d Add support for blog posts (CSL: post-weblog). (#5536)
93c97ea Update tud bwl marketing style (#5538)
4308791 Create the-chinese-journal-of-international-politics.csl (#5537)
09f3362 Add hanging-indents to infoclio.ch styles (#5540)
d4dc679 Further improvements to norsk-henvisningsstandad-for-rettsvitenskapelige-tekster.csl (#5539)

git-subtree-dir: buildres/csl/csl-styles
git-subtree-split: 176997d
Siedlerchr pushed a commit that referenced this pull request Jul 15, 2021
)

176997d Update veterinary-pathology.csl (#5554)
ee035c1 Update mycologia.csl (#5555)
eb4b3a6 Create international-journal-of-automotive-technology.csl (#5557)
3c4e727 Bump addressable from 2.7.0 to 2.8.0 (#5558)
ccb81c8 Create szociologiai-szemle.csl (#5547)
ed9d740 Update brain.csl to ama.csl dependent (#5546)
ab499f2 Create iran-manual-style (#5350)
6e2b13c Update and rename dependent/estuaries-and-coasts.csl to estuaries-and-coasts.csl (#5534)
8441ff9 Create fachhochschule-suedwestfalen.csl (#5459)
8439cf4 Create freie-hochschule-stuttgart.csl (#5466)
076c513 Update midwestern-baptist-theological-seminary.csl (#5420)
350b900 Update veterinary-pathology.csl (#5543)
06261c0 Create United States International Trade Commission.csl (#5508)
7ae505d Add support for blog posts (CSL: post-weblog). (#5536)
93c97ea Update tud bwl marketing style (#5538)
4308791 Create the-chinese-journal-of-international-politics.csl (#5537)
09f3362 Add hanging-indents to infoclio.ch styles (#5540)
d4dc679 Further improvements to norsk-henvisningsstandad-for-rettsvitenskapelige-tekster.csl (#5539)

git-subtree-dir: buildres/csl/csl-styles
git-subtree-split: 176997d

Co-authored-by: github actions <[email protected]>
koppor pushed a commit that referenced this pull request Aug 1, 2021
1b00ec0 Create journal-of-international-studies.csl (#5574)
79a5d9c Switch MLA to 9th edition (#5561)
011fef3 Update for corrections (#5573)
ff5490c Create zeitschrift-fur-geschichtsdidaktik.csl (#5569)
9093f2f Create etri-journal.csl (#5570)
c9ba757 Create radiation-protection-dosimetry.csl (#5571)
60632bc Create horttechnology.csl (#5572)
e63820b Add a new journal (magnetic resonance in medical sciences) (#5542)
b656885 Create zeitschrift-fur-papyrologie-und-epigraphik.csl (#5548)
25e1eef Update technische-universitat-dresden-linguistik.csl (#5563)
c0c0da4 Create the-american-journal-of-dermatopathology.csl (#5564)
63f7db9 Update journal-of-the-american-association-of-laboratory-animal-scien… (#5566)
ba64225 Update institut-français-darcheologie-orientale-en.csl (#5553)
32e9031 Create institut-francais-darcheologie-orientale-domaine-des-etudes-arabes-en.csl (#5551)
23e2cf5 Create institut-francais-darcheologie-orientale-domaine-des-etudes-arabes.csl (#5550)
3e1a3f3 Update institut-français-darcheologie-orientale.csl (#5552)
176997d Update veterinary-pathology.csl (#5554)
ee035c1 Update mycologia.csl (#5555)
eb4b3a6 Create international-journal-of-automotive-technology.csl (#5557)
3c4e727 Bump addressable from 2.7.0 to 2.8.0 (#5558)
ccb81c8 Create szociologiai-szemle.csl (#5547)
ed9d740 Update brain.csl to ama.csl dependent (#5546)
ab499f2 Create iran-manual-style (#5350)
6e2b13c Update and rename dependent/estuaries-and-coasts.csl to estuaries-and-coasts.csl (#5534)
8441ff9 Create fachhochschule-suedwestfalen.csl (#5459)
8439cf4 Create freie-hochschule-stuttgart.csl (#5466)
076c513 Update midwestern-baptist-theological-seminary.csl (#5420)
350b900 Update veterinary-pathology.csl (#5543)
06261c0 Create United States International Trade Commission.csl (#5508)
7ae505d Add support for blog posts (CSL: post-weblog). (#5536)
93c97ea Update tud bwl marketing style (#5538)
4308791 Create the-chinese-journal-of-international-politics.csl (#5537)
09f3362 Add hanging-indents to infoclio.ch styles (#5540)
d4dc679 Further improvements to norsk-henvisningsstandad-for-rettsvitenskapelige-tekster.csl (#5539)

git-subtree-dir: buildres/csl/csl-styles
git-subtree-split: 1b00ec0
Siedlerchr pushed a commit that referenced this pull request Aug 1, 2021
)

1b00ec0 Create journal-of-international-studies.csl (#5574)
79a5d9c Switch MLA to 9th edition (#5561)
011fef3 Update for corrections (#5573)
ff5490c Create zeitschrift-fur-geschichtsdidaktik.csl (#5569)
9093f2f Create etri-journal.csl (#5570)
c9ba757 Create radiation-protection-dosimetry.csl (#5571)
60632bc Create horttechnology.csl (#5572)
e63820b Add a new journal (magnetic resonance in medical sciences) (#5542)
b656885 Create zeitschrift-fur-papyrologie-und-epigraphik.csl (#5548)
25e1eef Update technische-universitat-dresden-linguistik.csl (#5563)
c0c0da4 Create the-american-journal-of-dermatopathology.csl (#5564)
63f7db9 Update journal-of-the-american-association-of-laboratory-animal-scien… (#5566)
ba64225 Update institut-français-darcheologie-orientale-en.csl (#5553)
32e9031 Create institut-francais-darcheologie-orientale-domaine-des-etudes-arabes-en.csl (#5551)
23e2cf5 Create institut-francais-darcheologie-orientale-domaine-des-etudes-arabes.csl (#5550)
3e1a3f3 Update institut-français-darcheologie-orientale.csl (#5552)
176997d Update veterinary-pathology.csl (#5554)
ee035c1 Update mycologia.csl (#5555)
eb4b3a6 Create international-journal-of-automotive-technology.csl (#5557)
3c4e727 Bump addressable from 2.7.0 to 2.8.0 (#5558)
ccb81c8 Create szociologiai-szemle.csl (#5547)
ed9d740 Update brain.csl to ama.csl dependent (#5546)
ab499f2 Create iran-manual-style (#5350)
6e2b13c Update and rename dependent/estuaries-and-coasts.csl to estuaries-and-coasts.csl (#5534)
8441ff9 Create fachhochschule-suedwestfalen.csl (#5459)
8439cf4 Create freie-hochschule-stuttgart.csl (#5466)
076c513 Update midwestern-baptist-theological-seminary.csl (#5420)
350b900 Update veterinary-pathology.csl (#5543)
06261c0 Create United States International Trade Commission.csl (#5508)
7ae505d Add support for blog posts (CSL: post-weblog). (#5536)
93c97ea Update tud bwl marketing style (#5538)
4308791 Create the-chinese-journal-of-international-politics.csl (#5537)
09f3362 Add hanging-indents to infoclio.ch styles (#5540)
d4dc679 Further improvements to norsk-henvisningsstandad-for-rettsvitenskapelige-tekster.csl (#5539)

git-subtree-dir: buildres/csl/csl-styles
git-subtree-split: 1b00ec0

Co-authored-by: github actions <[email protected]>
koppor pushed a commit that referenced this pull request Aug 15, 2021
4703b5d [Frontiers in ...] Remove formatting for volume (#5580)
3a3eb0c Create journal-of-clinical-and-translational-science.csl (#5588)
cf08af8 Create clinical-pulmonary-medicine.csl (#5589)
98985b1 Create cancer-drug-resistance.csl (#5590)
0af101d Create american-journal-of-sociology.csl (#5591)
b24e1f5 Create san-francisco-estuary-and-watershed-science.csl (#5592)
6f9323c revise Manchester UP monograph style (note-bib) (#5587)
e6f982b Delete harper-adams (#5585)
1eef78f Create international-journal-of-clinical-research.csl (#5584)
f28865e OSCOLA.csl: Add publiser info to generic/working paper secondary sources (CSL type "article"). (#5541)
197ceb1 Create system-dynamics-review.csl (#5575)
1d33da2 Create microcirculation.csl (#5577)
d06f625 Create iawa-journal.csl (#5576)
4705585 Update for corrections (#5578)
c1c7852 Create praxis.csl (#5579)
e012054 Create European Review of Agricultural Economics style (#5567)
b2fa912 Create biomarkers.csl (#5582)
1b00ec0 Create journal-of-international-studies.csl (#5574)
79a5d9c Switch MLA to 9th edition (#5561)
011fef3 Update for corrections (#5573)
ff5490c Create zeitschrift-fur-geschichtsdidaktik.csl (#5569)
9093f2f Create etri-journal.csl (#5570)
c9ba757 Create radiation-protection-dosimetry.csl (#5571)
60632bc Create horttechnology.csl (#5572)
e63820b Add a new journal (magnetic resonance in medical sciences) (#5542)
b656885 Create zeitschrift-fur-papyrologie-und-epigraphik.csl (#5548)
25e1eef Update technische-universitat-dresden-linguistik.csl (#5563)
c0c0da4 Create the-american-journal-of-dermatopathology.csl (#5564)
63f7db9 Update journal-of-the-american-association-of-laboratory-animal-scien… (#5566)
ba64225 Update institut-français-darcheologie-orientale-en.csl (#5553)
32e9031 Create institut-francais-darcheologie-orientale-domaine-des-etudes-arabes-en.csl (#5551)
23e2cf5 Create institut-francais-darcheologie-orientale-domaine-des-etudes-arabes.csl (#5550)
3e1a3f3 Update institut-français-darcheologie-orientale.csl (#5552)
176997d Update veterinary-pathology.csl (#5554)
ee035c1 Update mycologia.csl (#5555)
eb4b3a6 Create international-journal-of-automotive-technology.csl (#5557)
3c4e727 Bump addressable from 2.7.0 to 2.8.0 (#5558)
ccb81c8 Create szociologiai-szemle.csl (#5547)
ed9d740 Update brain.csl to ama.csl dependent (#5546)
ab499f2 Create iran-manual-style (#5350)
6e2b13c Update and rename dependent/estuaries-and-coasts.csl to estuaries-and-coasts.csl (#5534)
8441ff9 Create fachhochschule-suedwestfalen.csl (#5459)
8439cf4 Create freie-hochschule-stuttgart.csl (#5466)
076c513 Update midwestern-baptist-theological-seminary.csl (#5420)
350b900 Update veterinary-pathology.csl (#5543)
06261c0 Create United States International Trade Commission.csl (#5508)
7ae505d Add support for blog posts (CSL: post-weblog). (#5536)
93c97ea Update tud bwl marketing style (#5538)
4308791 Create the-chinese-journal-of-international-politics.csl (#5537)
09f3362 Add hanging-indents to infoclio.ch styles (#5540)
d4dc679 Further improvements to norsk-henvisningsstandad-for-rettsvitenskapelige-tekster.csl (#5539)

git-subtree-dir: buildres/csl/csl-styles
git-subtree-split: 4703b5d
Siedlerchr pushed a commit that referenced this pull request Aug 15, 2021
* Squashed 'buildres/csl/csl-styles/' changes from ec4a4c0..4703b5d

4703b5d [Frontiers in ...] Remove formatting for volume (#5580)
3a3eb0c Create journal-of-clinical-and-translational-science.csl (#5588)
cf08af8 Create clinical-pulmonary-medicine.csl (#5589)
98985b1 Create cancer-drug-resistance.csl (#5590)
0af101d Create american-journal-of-sociology.csl (#5591)
b24e1f5 Create san-francisco-estuary-and-watershed-science.csl (#5592)
6f9323c revise Manchester UP monograph style (note-bib) (#5587)
e6f982b Delete harper-adams (#5585)
1eef78f Create international-journal-of-clinical-research.csl (#5584)
f28865e OSCOLA.csl: Add publiser info to generic/working paper secondary sources (CSL type "article"). (#5541)
197ceb1 Create system-dynamics-review.csl (#5575)
1d33da2 Create microcirculation.csl (#5577)
d06f625 Create iawa-journal.csl (#5576)
4705585 Update for corrections (#5578)
c1c7852 Create praxis.csl (#5579)
e012054 Create European Review of Agricultural Economics style (#5567)
b2fa912 Create biomarkers.csl (#5582)
1b00ec0 Create journal-of-international-studies.csl (#5574)
79a5d9c Switch MLA to 9th edition (#5561)
011fef3 Update for corrections (#5573)
ff5490c Create zeitschrift-fur-geschichtsdidaktik.csl (#5569)
9093f2f Create etri-journal.csl (#5570)
c9ba757 Create radiation-protection-dosimetry.csl (#5571)
60632bc Create horttechnology.csl (#5572)
e63820b Add a new journal (magnetic resonance in medical sciences) (#5542)
b656885 Create zeitschrift-fur-papyrologie-und-epigraphik.csl (#5548)
25e1eef Update technische-universitat-dresden-linguistik.csl (#5563)
c0c0da4 Create the-american-journal-of-dermatopathology.csl (#5564)
63f7db9 Update journal-of-the-american-association-of-laboratory-animal-scien… (#5566)
ba64225 Update institut-français-darcheologie-orientale-en.csl (#5553)
32e9031 Create institut-francais-darcheologie-orientale-domaine-des-etudes-arabes-en.csl (#5551)
23e2cf5 Create institut-francais-darcheologie-orientale-domaine-des-etudes-arabes.csl (#5550)
3e1a3f3 Update institut-français-darcheologie-orientale.csl (#5552)
176997d Update veterinary-pathology.csl (#5554)
ee035c1 Update mycologia.csl (#5555)
eb4b3a6 Create international-journal-of-automotive-technology.csl (#5557)
3c4e727 Bump addressable from 2.7.0 to 2.8.0 (#5558)
ccb81c8 Create szociologiai-szemle.csl (#5547)
ed9d740 Update brain.csl to ama.csl dependent (#5546)
ab499f2 Create iran-manual-style (#5350)
6e2b13c Update and rename dependent/estuaries-and-coasts.csl to estuaries-and-coasts.csl (#5534)
8441ff9 Create fachhochschule-suedwestfalen.csl (#5459)
8439cf4 Create freie-hochschule-stuttgart.csl (#5466)
076c513 Update midwestern-baptist-theological-seminary.csl (#5420)
350b900 Update veterinary-pathology.csl (#5543)
06261c0 Create United States International Trade Commission.csl (#5508)
7ae505d Add support for blog posts (CSL: post-weblog). (#5536)
93c97ea Update tud bwl marketing style (#5538)
4308791 Create the-chinese-journal-of-international-politics.csl (#5537)
09f3362 Add hanging-indents to infoclio.ch styles (#5540)
d4dc679 Further improvements to norsk-henvisningsstandad-for-rettsvitenskapelige-tekster.csl (#5539)

git-subtree-dir: buildres/csl/csl-styles
git-subtree-split: 4703b5d

* Squashed 'buildres/csl/csl-locales/' changes from ec6d62a9e7..7a507fc008

7a507fc008 Fix spelling of October in Thai locale

git-subtree-dir: buildres/csl/csl-locales
git-subtree-split: 7a507fc0084edea8376ee5345879ddc2c99829ba

Co-authored-by: github actions <[email protected]>
koppor pushed a commit that referenced this pull request Sep 1, 2021
2b37392 Create betriebswirtschaftliche-forschung-und-praxis.csl (#5609)
a52989c Update universitat-zu-koln-seminar-fur-abwl-und-finanzierungslehre.csl (#5610)
47c21bf Add historioPLUS (#5611)
baf11b4 Update urad-rs-za-makroekonomske-analize-in-razvoj.csl (#5607)
636affa Create pain-medicine.csl (#5606)
1d060f9 Update sist02.csl (#5568)
54e8904 Update ucl-university-college-apa.csl (#5597)
9c6308e Creation du style cahiers-du-journalisme.csl (#5595)
7dea54b Update universite-du-quebec-a-montreal.csl (#5596)
b110d07 Update journal-of-paleontology.csl (#5594)
9cc3797 Add workaround for software style in ASA (sociology) (#5464)
459dfb7 Update american-journal-of-sociology.csl (#5604)
f73d62f Create council-of-science-editors-brackets.csl (#5593)
bacf673 Remove extra accent (#5598)
55e1d40 Update system-dynamics-review.csl (#5599)
b8262e4 Update independent style for journal-of-cataract-and-refractive-surgery.csl (#5602)
04da306 Create quaderni-ministero-dei-beni-e-delle-attivita-culturali-e-del-t… (#5600)
8144588 Update journal-of-dental-research.csl (#5601)
4703b5d [Frontiers in ...] Remove formatting for volume (#5580)
3a3eb0c Create journal-of-clinical-and-translational-science.csl (#5588)
cf08af8 Create clinical-pulmonary-medicine.csl (#5589)
98985b1 Create cancer-drug-resistance.csl (#5590)
0af101d Create american-journal-of-sociology.csl (#5591)
b24e1f5 Create san-francisco-estuary-and-watershed-science.csl (#5592)
6f9323c revise Manchester UP monograph style (note-bib) (#5587)
e6f982b Delete harper-adams (#5585)
1eef78f Create international-journal-of-clinical-research.csl (#5584)
f28865e OSCOLA.csl: Add publiser info to generic/working paper secondary sources (CSL type "article"). (#5541)
197ceb1 Create system-dynamics-review.csl (#5575)
1d33da2 Create microcirculation.csl (#5577)
d06f625 Create iawa-journal.csl (#5576)
4705585 Update for corrections (#5578)
c1c7852 Create praxis.csl (#5579)
e012054 Create European Review of Agricultural Economics style (#5567)
b2fa912 Create biomarkers.csl (#5582)
1b00ec0 Create journal-of-international-studies.csl (#5574)
79a5d9c Switch MLA to 9th edition (#5561)
011fef3 Update for corrections (#5573)
ff5490c Create zeitschrift-fur-geschichtsdidaktik.csl (#5569)
9093f2f Create etri-journal.csl (#5570)
c9ba757 Create radiation-protection-dosimetry.csl (#5571)
60632bc Create horttechnology.csl (#5572)
e63820b Add a new journal (magnetic resonance in medical sciences) (#5542)
b656885 Create zeitschrift-fur-papyrologie-und-epigraphik.csl (#5548)
25e1eef Update technische-universitat-dresden-linguistik.csl (#5563)
c0c0da4 Create the-american-journal-of-dermatopathology.csl (#5564)
63f7db9 Update journal-of-the-american-association-of-laboratory-animal-scien… (#5566)
ba64225 Update institut-français-darcheologie-orientale-en.csl (#5553)
32e9031 Create institut-francais-darcheologie-orientale-domaine-des-etudes-arabes-en.csl (#5551)
23e2cf5 Create institut-francais-darcheologie-orientale-domaine-des-etudes-arabes.csl (#5550)
3e1a3f3 Update institut-français-darcheologie-orientale.csl (#5552)
176997d Update veterinary-pathology.csl (#5554)
ee035c1 Update mycologia.csl (#5555)
eb4b3a6 Create international-journal-of-automotive-technology.csl (#5557)
3c4e727 Bump addressable from 2.7.0 to 2.8.0 (#5558)
ccb81c8 Create szociologiai-szemle.csl (#5547)
ed9d740 Update brain.csl to ama.csl dependent (#5546)
ab499f2 Create iran-manual-style (#5350)
6e2b13c Update and rename dependent/estuaries-and-coasts.csl to estuaries-and-coasts.csl (#5534)
8441ff9 Create fachhochschule-suedwestfalen.csl (#5459)
8439cf4 Create freie-hochschule-stuttgart.csl (#5466)
076c513 Update midwestern-baptist-theological-seminary.csl (#5420)
350b900 Update veterinary-pathology.csl (#5543)
06261c0 Create United States International Trade Commission.csl (#5508)
7ae505d Add support for blog posts (CSL: post-weblog). (#5536)
93c97ea Update tud bwl marketing style (#5538)
4308791 Create the-chinese-journal-of-international-politics.csl (#5537)
09f3362 Add hanging-indents to infoclio.ch styles (#5540)
d4dc679 Further improvements to norsk-henvisningsstandad-for-rettsvitenskapelige-tekster.csl (#5539)

git-subtree-dir: buildres/csl/csl-styles
git-subtree-split: 2b37392
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

status: ready-for-review Pull Requests that are ready to be reviewed by the maintainers

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants