I will start teaching two courses (one undergraduate with 350 students and the other a master’s course with 40 students) at the beginning of February. None of those courses involves CS students, which implies that the computational side of the material will need to be kept at an introductory level. It is not the first time we are doing this; actually, it is the tenth semester.
In our previous experience, students showed no distaste for the Julia programming language and loved working with Pluto notebooks, which they found an amazing tool. However, they complain loudly about how long it takes to load a pretty regular Pluto notebook. In the first years of this journey, we expected that as new Julia versions were released, these large loading times would be significantly reduced or at least become more tolerable, on par with other languages (e.g., Python and JavaScript, given that I am only considering reactive notebooks here).
However, such an expectation has proved wrong so far. As new Julia versions kept coming, not only did precompilation times keep increasing, but so did running times. I checked this forum, and several issues have already been raised about similar concerns. For example, three years ago, @fonsp raised an issue about the time it takes to launch a Pluto notebook for the first time with version 1.9 here, and more recently, he raised concerns about precompilation times in general here. I am also aware of @krastanov’s recent issue here.
After reading a large number of contributions across all those threads (and there are others as well), I am left with the impression that most people consider that there is no significant problem with either precompilation or run times across the new Julia versions. I may have developed a wrong impression here, as my programming skills are mediocre, but that is how I feel from my readings.
However, as a Julia and Pluto user, I have a problem. I have several notebooks that I use in my teaching, and as time has gone by and new Julia versions have arrived, loading times have gotten worse, not better. Over these five years, the notebooks and packages I use have remained more or less the same, the students’ computers have become significantly better, but to my surprise, the loading times have increased significantly!
Let me clarify one important point. In my particular case, I am not highly concerned about precompilation time in general, because the second time I load a Pluto notebook, the precompilation times are tolerable: e.g., 4 or 5s for a set of packages that includes HypertextLiteral, PlutoUI, ColorSchemes, PlutoPlotly, SparseArrays, PlotlyKaleido, CSV, DataFrames, Dates, LinearAlgebra, NLsolve, StatsBase, CommonMark. What surprises me is the large amount of run time (evaluating cells) it takes on my computer (a good Windows 11 machine): from 16.1s in Julia 1.10.10 to 20.2s in Julia 1.12.4. If the packages are the same, the Pluto version is the same (0.20.21), why does Julia 1.12.4 take around 125% of the time that Julia 1.10.10 requires to evaluate the cells in a pretty simple notebook? But the same happens during precompilation time (second run) in the same notebook: Julia 1.12.4 takes about 135.7% longer than Julia 1.10.10.
As I am well aware of the limitations of my programming skills, I did a similar test using one of @fons Pluto’s notebooks created for a course on Bayesian Machine Learning at the TU Eindhoven. The second time his “Bayesian Machine Learning” notebook was loaded, the times are as follows:
- Julia 1.10.10: Packages precompilation (2.3s), Running code (8.3s)
- Julia 1.12.4: Packages precompilation (4.3s), Running code (12.2s)
This data suggests that the precompilation time in Julia 1.12.4 is more than 87% that in Julia 1.10.10 for a set of packages that includes Plots, LaTeXStrings, Plots, PlotMeasures, Distributions, StatsPlots, SpecialFunctions, Random, BmlipTeachingTools, and MarkdownLiteral. On the other hand, the running time in Julia 1.12.4 is 47% higher than in version 1.10.10.
Please do not misunderstand me: I am not criticizing anyone or anything, and I must be thankful to all those who put time and effort into developing open-source tools that I use for free. I have been using Julia since 2019, and I love the language. However, the trend I have been witnessing in precompilation and runtime hurts how students (and my colleagues) view the Julia programming language and the Pluto notebook. As people become aware that a reactive notebook in Python is currently around four times faster than a Pluto notebook, we who have pushed for the use of such a beautiful language and tools in our teaching duties will be in trouble sooner or later.
