Bug#877418: dh-strip-nondeterminism: kills clojure performance
Chris Lambwrites: > Chris Lamb wrote: > >> > I noticed that Debian's clojure-1.8.0.jar had terrible performance as >> > compared to both the upstream jar >> >> Oh boy, this sounds fun! > > There's no obvious reason at this point why this performance regression is > limited to Clojure, unless — hopefully — it's related to the .clj files? > > ie. this could be affecting the performance of all Java applications > in Debian (!) I wondered if Clojure might be trying to be clever there, and... https://stackoverflow.com/questions/19594360/preserving-timestamps-on-clojure-clj-files-when-building-shaded-jar-via-maven-s So maybe if you ensure the class files are newer than the .clj files? Thanks for the help -- Rob Browning rlb @defaultvalue.org and @debian.org GPG as of 2011-07-10 E6A9 DA3C C9FD 1FF8 C676 D2C4 C0F0 39E9 ED1B 597A GPG as of 2002-11-03 14DD 432F AE39 534D B592 F9A0 25C8 D377 8C7E 73A4 ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
Разнообразете сексуалният си живот! Изненадайте вашата половинка с продуктите на Еротичен магазин Sexsale.bg!
Разнообразете сексуалният си живот с продуктите на Еротичен магазин Sexsale.bg!Изненадайте вашата половинка, като и подарите незабравим секси подарък от Еротичен магазин Sexsale.bgПри нас ще намерите голямото разнообразие от вибратори, дилда, еротично бельо , секс стимуланти , козметика, задържащи спрейове , вибро-комплекти, пенис помпи за уголемяване , кукли, вагини и мастурбатори , както и много други еротични продукти на най-добрите цени.Бърза и дискретна доставка в цялата страна! За поръчки над 35 лв тя е безплатна.Sex Shop OUTLET с намаления до - 60%Луксозни секс играчки за ценители можете да видите ТУК.www.sexsale.bg Съгласно закона за електронна търговия Чл. 6, ал. 1 Ви уведомяваме, че е възможно това да е непоискано търговско съобщение. То е еднократно изпратено писмо до Вашия e-mail адрес, който е взет от публичното пространство. Извиняваме се за причиненото неудобство, ако сме Ви притеснили с нашето предложение. Ако не желаете да получавате съобщения от Sexsale , моля натиснете тук! ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
Bug#877418: dh-strip-nondeterminism: kills clojure performance
On Mon, 02 Oct 2017 12:00:36 +0100 Chris Lambwrote: > There's no obvious reason at this point why this performance regression is > limited to Clojure, unless — hopefully — it's related to the .clj files? > > ie. this could be affecting the performance of all Java applications > in Debian (!) Hey having fun with a Java puzzle and not telling the Java Team? That's mean ;) I quickly investigated this, it looks like the .clj files bundled in clojure.jar are recompiled every time clojure is invoked if the jar was processed by strip-nondeterminism. My guess was that the .clj files are recompiled if the associated .class file is older, but it also happens if they have the same date. I eventually found this check performed in the load() method of RT.java: if((classURL != null && (cljURL == null || lastModified(classURL, classfile) > lastModified(cljURL, scriptfile))) Changing '>' with '>=' fixes the issue. Emmanuel Bourg ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
Please review the draft for week 127's blog post
Hi all, This week's blog post draft is now available for review: https://reproducible.alioth.debian.org/blog/drafts/127/ Feel free to commit fixes directly to drafts/127.mdwn in https://anonscm.debian.org/git/reproducible/blog.git/ I'll wait at least 24 hours from the time of this email for any comments, and if everything is good then I will publish it soon after that. X -- GPG: ed25519/56034877E1F87C35 GPG: rsa4096/1318EFAC5FBBDBCE https://github.com/infinity0/pubkeys.git ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
Bug#877418: dh-strip-nondeterminism: kills clojure performance
tags 877418 + confirmed thanks Hi Rob, > I noticed that Debian's clojure-1.8.0.jar had terrible performance as > compared to both the upstream jar Oh boy, this sounds fun! I can confirm it is due to strip-nondeterminism. In particular, the part that sets the last modified date of the .jar contents (!): --- a/lib/File/StripNondeterminism/handlers/zip.pm +++ b/lib/File/StripNondeterminism/handlers/zip.pm @@ -198,8 +198,6 @@ sub normalize { $zip->addMember($member); $options{member_normalizer}->($member) if exists $options{member_normalizer}; - $member->setLastModFileDateTimeFromUnix( - $File::StripNondeterminism::canonical_time // SAFE_EPOCH); if ($member->fileAttributeFormat() == FA_UNIX) { $member->unixFileAttributes( ($member->unixFileAttributes() & oct(100)) Applying this hunk removes the observed performance regression entirely, despite it altering the .jar (different sha1sum, etc.). What might be a useful/relevant detail here is that if I apply the following diff, *clamping* the time rather than always setting it: --- a/lib/File/StripNondeterminism/handlers/zip.pm +++ b/lib/File/StripNondeterminism/handlers/zip.pm @@ -198,8 +198,9 @@ sub normalize { $zip->addMember($member); $options{member_normalizer}->($member) if exists $options{member_normalizer}; - $member->setLastModFileDateTimeFromUnix( - $File::StripNondeterminism::canonical_time // SAFE_EPOCH); + my $canonical_time = $File::StripNondeterminism::canonical_time // SAFE_EPOCH; + $member->setLastModFileDateTimeFromUnix($canonical_time) + if $member->lastModTime() > $canonical_time; if ($member->fileAttributeFormat() == FA_UNIX) { $member->unixFileAttributes( ($member->unixFileAttributes() & oct(100)) … I get about a 25% performance regression: 1.23s user 0.06s system 191% cpu 0.673 total 2.08s user 0.09s system 231% cpu 0.940 total Also, setting $canonical_time far in the future results in zero performance regression again. This makes no sense whatsoever unless, perhaps, Java is ignoring .class files at runtime based on their modification date compared to the current time...? Regards, -- ,''`. : :' : Chris Lamb `. `'` la...@debian.org / chris-lamb.co.uk `- ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds