julia> function fib1(n)
if n==1
return n
else
return n+fib1(n-1)
end
end
fib1 (generic function with 1 method) julia> function fib2(n,s)
if n == 1
return s+1
else
return fib2(n-1,s+n)
end
end
fib2 (generic function with 1 method) julia> fib1(10)
55 julia> fib2(10)
ERROR: MethodError: no method matching fib2(::Int64)
Closest candidates are:
fib2(::Any, ::Any) at REPL[18]:2 julia> fib2(10,0)
55 julia> fib2(20)
ERROR: MethodError: no method matching fib2(::Int64)
Closest candidates are:
fib2(::Any, ::Any) at REPL[18]:2 julia> fib2(20,0)
210 julia> fib1(20)
210 julia> time(fib1(100))
ERROR: MethodError: no method matching time(::Int64)
Closest candidates are:
time() at libc.jl:206
time(::Base.Libc.TmStruct) at libc.jl:205 julia> @time(fib1(100))
0.000005 seconds (131 allocations: 7.734 KB)
5050 julia> @time(fib2(100,0))
0.000007 seconds (5 allocations: 176 bytes)
5050 julia> @time(fib1(500))
0.000005 seconds (5 allocations: 176 bytes)
125250 julia> @time(fib2(500,0))
0.000010 seconds (5 allocations: 176 bytes)
125250 julia> @time(fib1(1000))
0.000022 seconds (5 allocations: 176 bytes)
500500 julia> @time(fib2(1000,0))
0.000009 seconds (5 allocations: 176 bytes)
500500 julia> @time(fib1(10000))
0.000325 seconds (5 allocations: 176 bytes)
50005000 julia> @time(fib2(10000,0))
0.000095 seconds (5 allocations: 176 bytes)
50005000

julia> code_native(fib1,(Int64,))
.text
Filename: REPL[17]
pushq %rbp
movq %rsp, %rbp
pushq %rsi
subq $40, %rsp
movq %rcx, %rsi
Source line: 2
cmpq $1, %rsi
jne L30
Source line: 3
movl $1, %eax
addq $40, %rsp
popq %rsi
popq %rbp
retq
Source line: 5
L30:
leaq -1(%rsi), %rcx
movabsq $fib1, %rax
callq *%rax
addq %rsi, %rax
addq $40, %rsp
popq %rsi
popq %rbp
retq
nopl (%rax,%rax)

julia> code_native(fib2,(Int64,Int64))
.text
Filename: REPL[18]
pushq %rbp
movq %rsp, %rbp
Source line: 2
subq $32, %rsp
cmpq $1, %rcx
jne L26
Source line: 3
incq %rdx
movq %rdx, %rax
addq $32, %rsp
popq %rbp
retq
Source line: 5
L26:
addq %rcx, %rdx
decq %rcx
movabsq $fib2, %rax
callq *%rax
addq $32, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)

  尾递归版应该是有优化的啊,为什么内存和执行时间都没明显差别?

julia的优化?的更多相关文章

  1. Julia 语言的一些尝试

    前些天发现了Julia 这门编程语言后便决定对其进行一些尝试,便写了下面的小程序,也算是看看这门语言所谓的速度快到底是怎么快法. 整数累加: x= function fff() : global x ...

  2. julia,集Python、C++、R为一体!Julia 1.0重磅发布, MIT发布史上最强科学计算编程语言?创始人独家解答11个问题

    这个编程语言的新版本之所以受到整个人工智能界的关注,最主要的原因正是其将 C 语言的速度.Ruby 的灵活.Python 的通用性前所未有地结合在一起,支持并行处理,易于学习和使用,尤其适合科学和工程 ...

  3. windows 版的julia repl 启动时间已经大大优化!

    julia 是一门语法类似python 偏向主要用于科学计算的语言,julia吸收了很多其它语言的优点,内置了大量函数,使用起来很方便. 之前windows下的 julia repl(交互解释器)启动 ...

  4. 详解 CUDA By Example 中的 Julia Set 绘制GPU优化

    笔者测试环境VS2019. 基本介绍 原书作者引入Julia Sets意在使用GPU加速图形的绘制.Julia Set 是指满足下式迭代收敛的复数集合 \[ Z_{n+1}=Z_{n}^2+C \] ...

  5. [转]OpenBLAS项目与矩阵乘法优化

    课程内容 OpenBLAS项目介绍 矩阵乘法优化算法 一步步调优实现 以下为公开课完整视频,共64分钟: 以下为公开课内容的文字及 PPT 整理. 雷锋网的朋友们大家好,我是张先轶,今天主要介绍一下我 ...

  6. OpenACC Julia 图形

    ▶ 书上的代码,逐步优化绘制 Julia 图形的代码 ● 无并行优化(手动优化了变量等) #include <stdio.h> #include <stdlib.h> #inc ...

  7. 初试 Julia 语言 (转)

    原文地址: https://blog.csdn.net/seekiu/article/details/47397067 随着  Julia 1.0版本的推出,人工智能圈子比较炸锅, 好像这门小众语言要 ...

  8. julia应用于自动驾驶汽车、机器人、3D 打印、精准医疗、增强现实、基因组学、能源交易、机器学习、金融风控和太空任务设计等多个领域

    编程界的新宠 Julia 发布 1.0 正式版本,多种优势集于一身2018-08-14 14:14 公司Julia 的累积下载次数超过 200 万,已被应用于自动驾驶汽车.机器人.3D 打印.精准医疗 ...

  9. Julia:高性能 GPU 计算的编程语言

    Julia:高性能 GPU 计算的编程语言 0条评论 2017-10-31 18:02    it168网站 原创 作者: 编译|田晓旭 编辑: 田晓旭 [IT168 评论]Julia是一种用于数学计 ...

随机推荐

  1. Flask 的 Context 机制

    转自https://blog.tonyseek.com/post/the-context-mechanism-of-flask/ Flask 的 Context 机制 2014 年 07 月 21 日 ...

  2. Jstl简单应用

    jsp引入信息------ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" % ...

  3. 关于处理小数点位数的几个oracle函数

    1. 取四舍五入的几位小数 select round(1.2345, 3) from dual; 结果:1.235 2. 保留两位小数,只舍 select trunc(1.2345, 2) from ...

  4. js 判断数组包含某值的方法 和 javascript数组扩展indexOf()方法

    var  questionId = []; var anSwerIdValue = []; ////javascript数组扩展indexOf()方法 Array.prototype.indexOf ...

  5. 类的高级:访问修饰符、封装、静态类成员static、内部类;

    访问修饰符: 公开访问(public):对所有子类,非子类访问: 受保护的(protected):只有同包子类.非子类.不同包子类可访问,不同包非子类不可访问: 私有的(private):只有本类可访 ...

  6. Iphone连接win10电脑正常, itunes无法识别解决

    1.之前试过重装itunes, apple的两个服务也都已经启动. 2.但是设备管理器不显示移动设备或者usb的apple mobile device driver 3.解决:打开C:\Program ...

  7. 【leetcode】 Remove Duplicates from Sorted List

    Given a sorted linked list, delete all duplicates such that each element appear only once. For examp ...

  8. IAR调节字体大小

    在主面板上点击tools->Options,然后点开Editor,选择下面的Colors and Fonts选项,最后选右上方的Font,选择要设置的字体就OK了.

  9. java守护线程的理解

    package daemonThread; /*setDaemon(true)方法将线程设置为守护线程,线程的Daemon默认值为false * 只要当前JVM实例中存在任何一个非守护线程没有结束,守 ...

  10. iOS常见算法笔试问题

    1. 给出一个由小写字母组成的字符串,把所有连续出现的 2 个 a 替换成 bb ( 2 个 b ),但是对于超过两个连续的 a,那么这些字符都不作替换.例如: bad -> bad (一个a, ...