Re: CPU & platform for best compilation performance

2017-08-24 Thread Daniel Compton
Ah right, I missed that 0.5.13 was released. I've opened
https://github.com/bhauman/lein-figwheel/issues/597 to discuss the caching
issue further.

On Fri, Aug 25, 2017 at 8:44 AM Maarten Truyens <
maarten.truy...@siteffects.be> wrote:

> Thanks for the response!
>
> Isn't that change already active in I noticed the change in 0.5.13? I
> actually tried that release, but it did not make a difference for me. I
> still need to have the DevTools visible, with "Disable cache" flagged in
> the Network Panel, to avoid situations where a modification that was
> correctly picked up by Figwheel, would suddenly get lost again when I
> perform a hard refresh of the page. (I never fully investigated this issue,
> because I assumed that it was perhaps linked to the fact that I have to
> disable the "reload-clj-files" for CLJC-files, to avoid that a single
> change in a CLJC would cause a full recompile of all CLJS files — which is
> unmanageable if half your codebase consists of CLJC files...).
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: CPU & platform for best compilation performance

2017-08-24 Thread Maarten Truyens
Thanks for the response! 

Isn't that change already active in I noticed the change in 0.5.13? I 
actually tried that release, but it did not make a difference for me. I 
still need to have the DevTools visible, with "Disable cache" flagged in 
the Network Panel, to avoid situations where a modification that was 
correctly picked up by Figwheel, would suddenly get lost again when I 
perform a hard refresh of the page. (I never fully investigated this issue, 
because I assumed that it was perhaps linked to the fact that I have to 
disable the "reload-clj-files" for CLJC-files, to avoid that a single 
change in a CLJC would cause a full recompile of all CLJS files — which is 
unmanageable if half your codebase consists of CLJC files...). 

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: CPU & platform for best compilation performance

2017-08-24 Thread Daniel Compton
Hi Maarten

Once https://github.com/bhauman/lein-figwheel/pull/586 is released, that
should improve your browser load time somewhat, as you won't need to do
empty your cache and do a hard reload.

On Thu, Aug 24, 2017 at 4:27 AM  wrote:

> Shot in the dark, but dependent namespace compilation may be the source of
> your CLJS compiler slowdowns if you have tons of namespaces. Try seeing
> what happens when you set :recompile-dependents to false in the CLJS
> compiler options.
>
>
> On Wednesday, August 23, 2017 at 11:54:44 AM UTC-4, Maarten Truyens wrote:
>>
>> Hi all,
>>
>> My codebase (mix of CLJ, CLJS and CLJS) is about fifty thousand lines of
>> code, and compilation times are starting to interfere with my workflow
>> happiness. In addition, Chrome Devtools is becoming somewhat sluggish due
>> to the high number of separate namespaces loaded through Figwheel.
>>
>> My current machine is a 6-core Mac Pro 3.5 Ghz Xeon ("late 2013"). For
>> quite a while I have been investigating whether a switch to another machine
>> and/or platform would be interesting from a workflow speed point of view.
>> However, aside from Timothy Pratley's article on the AMD Ryzen 1800x (
>> http://timothypratley.blogspot.in/2017/03/ryzen-is-for-programmers.html),
>> I have trouble finding information that is relevant for us Clojure
>> programmers.
>>
>> I would summarize my research as follows:
>> * single-core performance is most important, so that it is probably the
>> case that a 4-core CPU with a higher single-thread speed is preferable to
>> an 6/8/10-core CPU with a slower single-thread speed;
>> * as from 4 cores, there are hardly any speedups to be expected for
>> having more cores in CLJ or even (parallel) CLJS builds;
>> * the Ryzens are great value, but their single-core performance is
>> usually 10-20% below the top of the line Intels;
>> * according to the many Phoronix benchmarks, Linux and OSX have about the
>> same performance, although there are some interesting deviations for some
>> workflows (even up to 30 - 40%);
>> * the single-core performance difference between my current CPU and the
>> single-core top of the line (i7700K, i7-7800X or i7-7820X) seems to be
>> between 20-40%
>>
>> While a 50% performance increase would be enough to warrant the time
>> investment & cost of switching, my fear is that the real-world speed-up
>> will probably be more like a meager 20%.
>>
>> Ignoring cost considerations and performance outside CLJ development:
>> what CPU and platform would you recommend?
>>
>> Many thanks!
>>
>> Maarten
>>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: CPU & platform for best compilation performance

2017-08-23 Thread adrian . medina
Shot in the dark, but dependent namespace compilation may be the source of 
your CLJS compiler slowdowns if you have tons of namespaces. Try seeing 
what happens when you set :recompile-dependents to false in the CLJS 
compiler options.

On Wednesday, August 23, 2017 at 11:54:44 AM UTC-4, Maarten Truyens wrote:
>
> Hi all, 
>
> My codebase (mix of CLJ, CLJS and CLJS) is about fifty thousand lines of 
> code, and compilation times are starting to interfere with my workflow 
> happiness. In addition, Chrome Devtools is becoming somewhat sluggish due 
> to the high number of separate namespaces loaded through Figwheel. 
>
> My current machine is a 6-core Mac Pro 3.5 Ghz Xeon ("late 2013"). For 
> quite a while I have been investigating whether a switch to another machine 
> and/or platform would be interesting from a workflow speed point of view. 
> However, aside from Timothy Pratley's article on the AMD Ryzen 1800x (
> http://timothypratley.blogspot.in/2017/03/ryzen-is-for-programmers.html), 
> I have trouble finding information that is relevant for us Clojure 
> programmers. 
>
> I would summarize my research as follows:
> * single-core performance is most important, so that it is probably the 
> case that a 4-core CPU with a higher single-thread speed is preferable to 
> an 6/8/10-core CPU with a slower single-thread speed;
> * as from 4 cores, there are hardly any speedups to be expected for having 
> more cores in CLJ or even (parallel) CLJS builds;
> * the Ryzens are great value, but their single-core performance is usually 
> 10-20% below the top of the line Intels; 
> * according to the many Phoronix benchmarks, Linux and OSX have about the 
> same performance, although there are some interesting deviations for some 
> workflows (even up to 30 - 40%);
> * the single-core performance difference between my current CPU and the 
> single-core top of the line (i7700K, i7-7800X or i7-7820X) seems to be 
> between 20-40%
>
> While a 50% performance increase would be enough to warrant the time 
> investment & cost of switching, my fear is that the real-world speed-up 
> will probably be more like a meager 20%. 
>
> Ignoring cost considerations and performance outside CLJ development: what 
> CPU and platform would you recommend?  
>
> Many thanks!
>
> Maarten
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: CPU & platform for best compilation performance

2017-08-23 Thread Maarten Truyens
Thanks, appreciated!

Compiling the CLJ side takes about 30 seconds, a non-optimized CLJS about 
60 seconds, and an optimized CLJS about 120 seconds. I am very well aware 
that these absolute numbers are not so high, at least compared to languages 
such as Scala. However, I perform recompilations several times per day, and 
this adds up. What adds up even more, is the time it takes for Chrome to 
perform a hard refresh of the page (about 6 seconds), which happens many 
many more times per day. 

Funny that you mention large namespaces as a possible problem, because I 
personally had the impression that in a Figwheel environment, having 
less-but-somewhat-bigger namespaces was actually preferable to having 
more-but-smaller namespaces. FYI: I currently have about 200 CLJS/CLJC 
namespaces, differing in size between 50-800 lines on average. The total 
amount of CLJS/Javascript code loaded during development is about 20 MB — 
which doesn't seem out of the ordinary, right?

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: CPU & platform for best compilation performance

2017-08-23 Thread Timothy Baldridge
"My codebase (mix of CLJ, CLJS and CLJS) is about fifty thousand lines of
code, and compilation times are starting to interfere with my workflow
happiness. In addition, Chrome Devtools is becoming somewhat sluggish due
to the high number of separate namespaces loaded through Figwheel."

That's not an insane codebase size, but I wonder what your actual
compilation times are? Honesty, I'd be surprised if you even got a 20%
speedup in a compiler by simply upgrading the CPU. CPU tech improvements
are more often focused around numerical computing and vector optimizations.
When there are massive leaps forward in raw execution performance, they're
often less than 20%.

So perf numbers are important here. Also if figwheel is loading large
namespaces into the browser, and running a lot of hooks to patch up the
running system, that can also affect performance.

I'd recommend taking a look the CLJS code in a profiler and seeing where
the slowdown is. Perhaps the namespaces are too large and figwheel is
sending across megabytes of JS, or perhaps there's a bad algorithm
somewhere.

On Wed, Aug 23, 2017 at 9:54 AM, Maarten Truyens <
maarten.truy...@siteffects.be> wrote:

> Hi all,
>
> My codebase (mix of CLJ, CLJS and CLJS) is about fifty thousand lines of
> code, and compilation times are starting to interfere with my workflow
> happiness. In addition, Chrome Devtools is becoming somewhat sluggish due
> to the high number of separate namespaces loaded through Figwheel.
>
> My current machine is a 6-core Mac Pro 3.5 Ghz Xeon ("late 2013"). For
> quite a while I have been investigating whether a switch to another machine
> and/or platform would be interesting from a workflow speed point of view.
> However, aside from Timothy Pratley's article on the AMD Ryzen 1800x (
> http://timothypratley.blogspot.in/2017/03/ryzen-is-for-programmers.html),
> I have trouble finding information that is relevant for us Clojure
> programmers.
>
> I would summarize my research as follows:
> * single-core performance is most important, so that it is probably the
> case that a 4-core CPU with a higher single-thread speed is preferable to
> an 6/8/10-core CPU with a slower single-thread speed;
> * as from 4 cores, there are hardly any speedups to be expected for having
> more cores in CLJ or even (parallel) CLJS builds;
> * the Ryzens are great value, but their single-core performance is usually
> 10-20% below the top of the line Intels;
> * according to the many Phoronix benchmarks, Linux and OSX have about the
> same performance, although there are some interesting deviations for some
> workflows (even up to 30 - 40%);
> * the single-core performance difference between my current CPU and the
> single-core top of the line (i7700K, i7-7800X or i7-7820X) seems to be
> between 20-40%
>
> While a 50% performance increase would be enough to warrant the time
> investment & cost of switching, my fear is that the real-world speed-up
> will probably be more like a meager 20%.
>
> Ignoring cost considerations and performance outside CLJ development: what
> CPU and platform would you recommend?
>
> Many thanks!
>
> Maarten
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>



-- 
“One of the main causes of the fall of the Roman Empire was that–lacking
zero–they had no way to indicate successful termination of their C
programs.”
(Robert Firth)

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.