# 10 Julia Recipes You Can't Miss

**URL:** <https://discourse.julialang.org/t/10-julia-recipes-you-cant-miss/103298>\
**Category:** Teaching & Outreach\
**Created:** [August 28, 2023, 3:37pm UTC](https://discourse.julialang.org/t/10-julia-recipes-you-cant-miss/103298 "2023-08-28T15:37:49Z")\
**Posts on this page:** 9\
**Page:** 2

<div class="post-metadata">

**Author:** ![VinodV](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/vinodv/32/32733_2.png) [@VinodV](https://discourse.julialang.org/u/VinodV)\
**Post date:** [August 30, 2023, 1:25am UTC](https://discourse.julialang.org/t/10-julia-recipes-you-cant-miss/103298/21 "2023-08-30T01:25:39Z")

</div>

> [@alfaromartino](#):
>
> ```julia
> function foo(x)
> output = similar(x)
>     
> for i in eachindex(x)
> output[i] = x[i] + 1
> end
> 
> return output
> end
> 
> ```

The second solution seems to be more efficient. Isn’t it.

```julia
 @time b = foo(1:100) #first one
  0.000023 seconds (1 allocation: 896 bytes)

```

```julia
 @time b = foo(1:100) #second one
  0.000008 seconds (1 allocation: 896 bytes)

```

---

<div class="post-metadata">

**Author:** ![alfaromartino](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/alfaromartino/32/52986_2.png) [@alfaromartino](https://discourse.julialang.org/u/alfaromartino)\
**Post date:** [August 30, 2023, 3:03am UTC](https://discourse.julialang.org/t/10-julia-recipes-you-cant-miss/103298/22 "2023-08-30T03:03:22Z")

</div>

There should be no difference, or at most a negligible difference.

Recall that to compute times, either use `@time` and execute the function at least twice (the first run is always polluted by compilation time). But to do serious benchmarks, use the package `BenchmarkTools` and `@btime`. This computes multiple times the calculation to provide a more accurate benchmark.

---

<div class="post-metadata">

**Author:** ![lostella](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lostella/32/356_2.png) [@lostella](https://discourse.julialang.org/u/lostella)\
**Post date:** [August 30, 2023, 6:58am UTC](https://discourse.julialang.org/t/10-julia-recipes-you-cant-miss/103298/23 "2023-08-30T06:58:01Z")

</div>

Something I find extremely useful for reading files: eachline [I/O and Network · The Julia Language](https://docs.julialang.org/en/v1/base/io-network/#Base.eachline)

~~Also note that `reverse` needs to be qualified as `Iterators.reverse` in recent Julia versions.~~

Edit: Note however that `reverse` will not work with `eachline`, unlike `Iterators.reverse`.

---

<div class="post-metadata">

**Author:** ![VinodV](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/vinodv/32/32733_2.png) [@VinodV](https://discourse.julialang.org/u/VinodV)\
**Post date:** [August 30, 2023, 7:50am UTC](https://discourse.julialang.org/t/10-julia-recipes-you-cant-miss/103298/24 "2023-08-30T07:50:29Z")

</div>

Updated in the article.

---

<div class="post-metadata">

**Author:** ![Eben60](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/eben60/32/13475_2.png) [@Eben60](https://discourse.julialang.org/u/Eben60)\
**Post date:** [August 30, 2023, 11:44am UTC](https://discourse.julialang.org/t/10-julia-recipes-you-cant-miss/103298/25 "2023-08-30T11:44:34Z")

</div>

For h. - see also [Why are there all these strange stumbling blocks in Julia? - #67 by Eben60](https://discourse.julialang.org/t/why-are-there-all-these-strange-stumbling-blocks-in-julia/92644/67)

e.g.

```julia
function retMultipleValues()
    v1,v2 = "India","Iran"
    return (; v1,v2)
end

```

---

<div class="post-metadata">

**Author:** ![Eben60](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/eben60/32/13475_2.png) [@Eben60](https://discourse.julialang.org/u/Eben60)\
**Post date:** [August 30, 2023, 11:46am UTC](https://discourse.julialang.org/t/10-julia-recipes-you-cant-miss/103298/26 "2023-08-30T11:46:23Z")

</div>

Also, you might want to link this thread: [Seven Lines of Julia (examples sought)](https://discourse.julialang.org/t/seven-lines-of-julia-examples-sought/50416/)

---

<div class="post-metadata">

**Author:** ![GunnarFarneback](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gunnarfarneback/32/1827_2.png) [@GunnarFarneback](https://discourse.julialang.org/u/GunnarFarneback)\
**Post date:** [August 30, 2023, 12:53pm UTC](https://discourse.julialang.org/t/10-julia-recipes-you-cant-miss/103298/27 "2023-08-30T12:53:49Z")

</div>

> [@lostella](#):
>
> Also note that `reverse` needs to be qualified as `Iterators.reverse` in recent Julia versions.

That doesn’t sound right. You might mean that `Iterators.reverse` knows how to reverse `eachline` iterators in recent Julia versions. `reverse` from `Base` has never known how to do that.

---

<div class="post-metadata">

**Author:** ![lostella](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lostella/32/356_2.png) [@lostella](https://discourse.julialang.org/u/lostella)\
**Post date:** [August 30, 2023, 4:20pm UTC](https://discourse.julialang.org/t/10-julia-recipes-you-cant-miss/103298/28 "2023-08-30T16:20:58Z")

</div>

Yes, that’s right, my bad

---

<div class="post-metadata">

**Author:** ![VinodV](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/vinodv/32/32733_2.png) [@VinodV](https://discourse.julialang.org/u/VinodV)\
**Post date:** [October 17, 2023, 11:14am UTC](https://discourse.julialang.org/t/10-julia-recipes-you-cant-miss/103298/30 "2023-10-17T11:14:04Z")

</div>

Now updated to include around 21 recipes. Please give feedback on items 11-21.

[Previous page](https://discourse.julialang.org/t/10-julia-recipes-you-cant-miss/103298.md?page=1)
