1
3
如果我错了,请纠正我,但听起来你好像写了一个很长的剧本,比如说,
1)从命令行呼叫茱莉亚
2)即使您在一个repl会话中工作,它也是 极其 重要的是把你做的每件事都用函数包装起来(这是一个与类似于Matlab的语言截然不同的工作流)。如果您这样做,julia将为每个函数编译方法,这些方法专门用于您正在使用的输入参数的类型。这就是朱莉娅跑得快的根本原因。一旦编译了一次方法,它就可以在整个repl会话中使用,但是在关闭repl时会被释放。关键的是,如果不将操作包装在函数中,则不会进行这种专门的编译,因此您可能会期望非常慢的代码。在茱莉亚,我们称之为“在全球范围内工作”。注意,julia的这个特性鼓励一种编码风格,这种风格包括将任务分解成许多小的专门功能,而不是一个由1000行代码组成的庞然大物。这是个好主意,原因有很多。(在我自己的代码库中,许多函数都是一行代码,大多数是5行或更少)
如果你在茱莉亚工作,以上两点对你的理解至关重要。但是,一旦您对它们感到满意,我建议您将所有功能都放在
modules
,然后在需要时从活动REPL会话调用模块。这还有一个额外的优势,您可以添加一个
|
2
6
我有点不同意我的同事。有绝对有效的场景可以依赖于运行julia脚本。例如,当你有一个脚本管道(例如Matlab、Python等)时,你需要在其中插入一个Julia脚本,并从shell脚本控制整个管道。但是,不管是什么用例,说“只使用repl”并不是这个问题的正确答案,即使 不能 提出“有效”的方案,这仍然是一个值得直接回答的问题,而不是一个解决办法。 我同意的观点是,拥有适当代码的解决方案是将所有需要预编译的关键代码打包到模块中,并且只将所有外部命令(除了最外部的命令)保留在脚本的顶层。这与Matlab或C++世界截然不同,在这里,你需要编写完整的函数,并且只将脚本/ main函数视为一种非常简短的顶层入口点,其工作是简单地准备初始环境,然后运行那些更专业化的F。相应的功能。 以下是我的意思的一个例子:
在上面的场景中,编译后的
|
Sairus · 朱莉娅:如何编写修改结构域的快速函数? 6 年前 |
fatdragon · Julia中具有阵列广播的除法算子 6 年前 |
Morpheu5 · 连接Julia数据帧,添加分类列 6 年前 |
Adam Wheeler · julia中工人的局部变量访问 6 年前 |
Rcofrer · 从跳跃模型中提取右侧向量 6 年前 |
ChrlTsr · 在Julia中使用角度时出错 6 年前 |
4lrdyD · 如何在Julia中使用GSL? 6 年前 |
dapias · 通过迭代字典定义新变量的有效方法(Julia) 6 年前 |
tst · 朱莉娅:如何正确定义使用依赖于数字的类型的函数? 6 年前 |