# Accelerate precompilation of base

**URL:** https://discourse.julialang.org/t/accelerate-precompilation-of-base/3594
**Category:** Internals & Design
**Tags:** question
**Created:** [May 8, 2017, 2:04pm UTC](https://discourse.julialang.org/t/accelerate-precompilation-of-base/3594 "2017-05-08T14:04:24Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![singam-sanjay](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/singam-sanjay/32/1721_2.png) [@singam-sanjay](https://discourse.julialang.org/u/singam-sanjay)
#### Post date: [May 8, 2017, 2:04pm UTC](https://discourse.julialang.org/t/accelerate-precompilation-of-base/3594/1 "2017-05-08T14:04:24Z")

</div>

Hello,

I’m trying out a feature which requires me re-compile libjulia everytime. Sometimes, even the recompilation of Julia files under base/ is invoked, but this operation has been very time consuming. The compilation of precompile.jl is especially time consuming, taking around 15 mins.

Is there a way to accelerate this precompilation step ? Like spawning parallel Julia jobs ?

Thanks,  
Sanjay

---

<div class="post-metadata">

### Author: ![yuyichao](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yuyichao/32/20_2.png) [@yuyichao](https://discourse.julialang.org/u/yuyichao)
#### Post date: [May 8, 2017, 2:19pm UTC](https://discourse.julialang.org/t/accelerate-precompilation-of-base/3594/2 "2017-05-08T14:19:46Z")

</div>

There’s currently no way to do that and that’s one of the reasons why we want to split the Base.

Now that [#265](https://github.com/julialang/julia/issues/265) is fixed, you don’t have to recompile julia in many cases. Just overwrite Base functions for testing.

---

<div class="post-metadata">

### Author: ![singam-sanjay](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/singam-sanjay/32/1721_2.png) [@singam-sanjay](https://discourse.julialang.org/u/singam-sanjay)
#### Post date: [May 8, 2017, 2:47pm UTC](https://discourse.julialang.org/t/accelerate-precompilation-of-base/3594/3 "2017-05-08T14:47:51Z")

</div>

> [@yuyichao](#):
>
> Just overwrite Base functions for testing.

Didn’t get you here.

---

<div class="post-metadata">

### Author: ![yuyichao](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yuyichao/32/20_2.png) [@yuyichao](https://discourse.julialang.org/u/yuyichao)
#### Post date: [May 8, 2017, 2:53pm UTC](https://discourse.julialang.org/t/accelerate-precompilation-of-base/3594/4 "2017-05-08T14:53:43Z")

</div>

```julia
julia> Base.sin(x::Float64) = 1
WARNING: Method definition sin(Float64) in module Math at math.jl:416 overwritten in module Main at REPL[1]:1.

julia> sin(1.0)
1

```

---

<div class="post-metadata">

### Author: ![singam-sanjay](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/singam-sanjay/32/1721_2.png) [@singam-sanjay](https://discourse.julialang.org/u/singam-sanjay)
#### Post date: [May 8, 2017, 3:00pm UTC](https://discourse.julialang.org/t/accelerate-precompilation-of-base/3594/5 "2017-05-08T15:00:13Z")

</div>

Oh ok. But, I have to reinvoke julia after recompilation since I’m working on Polly. So this[quote=“yuyichao, post:4, topic:3594”]  
julia\> Base.sin(x::Float64) = 1  
[/quote]

this redefinition doesn’t carry across invocations of julia right ?

---

<div class="post-metadata">

### Author: ![yuyichao](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yuyichao/32/20_2.png) [@yuyichao](https://discourse.julialang.org/u/yuyichao)
#### Post date: [May 8, 2017, 3:20pm UTC](https://discourse.julialang.org/t/accelerate-precompilation-of-base/3594/6 "2017-05-08T15:20:24Z")

</div>

So just run it every time you restart julia. If you didn’t change any sysimg code and just need to recompile C++ part, you can just compile the `julia-ui-release` or `julia-ui-debug` targets to make sure there isn’t a recompilation from version number bump. Then you can just put all julia testing and monkey patching code in a separate script.

---

<div class="post-metadata">

### Author: ![mbauman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mbauman/32/31082_2.png) [@mbauman](https://discourse.julialang.org/u/mbauman)
#### Post date: [May 8, 2017, 3:39pm UTC](https://discourse.julialang.org/t/accelerate-precompilation-of-base/3594/7 "2017-05-08T15:39:49Z")

</div>

It’s even easier to just use `@eval Base`. That way the entire method definitions get evaluated within Base’s context — you can straight-up copy-paste code from Base and just wrap it in `@eval Base begin … end` with your modifications.
