|
1
7
还请注意,您可以使用 float64_isvalid 函数,以(a)检查字符串是否为有效的浮点值,(b)返回该值。
还要注意,冒号(
更快的代码版本应该是:
在我的机器上,对于一个包含100000行和10列数据(其中50%是有效数字)的示例文件,Python代码需要4.21秒,Julia代码需要2.45秒。 |
|
2
5
这是一个有趣的性能问题,可能值得提交给julia用户,以获得比SO可能提供的更集中的反馈。乍一看,我认为你遇到了问题,因为(1)try/catch开始时速度稍慢,然后(2)你使用try/catch的环境中存在大量类型不确定性,因为很多函数调用不返回稳定类型。因此,Julia解释器花费时间试图找出对象的类型,而不是进行计算。很难说清楚大瓶颈在哪里,因为你做了很多在朱莉娅不太习惯的事情。此外,您似乎在全局范围内进行计算,由于额外的类型不确定性,Julia的编译器无法执行许多有意义的优化。 |
![]() |
3
3
Python在控制流使用异常是好是坏这一问题上奇怪地模棱两可。看见 Python using exceptions for control flow considered bad? 。但即使在Python中,人们也一致认为用户代码不应该对控制流使用异常(尽管出于某些原因允许生成器这样做)。因此,基本上,简单的答案是,您不应该将异常用于特殊情况,而不是用于控制流。这就是为什么人们几乎没有付出任何努力来让Julia的try/catch构造更快——你不应该一开始就那样使用它。当然,我们可能会在某个时候加快速度。 也就是说,作为Julia标准库的设计者,我们有责任确保我们提供的API不会强迫您使用异常来控制流。在这种情况下,您需要一个函数,该函数允许您尝试将某个值解析为浮点值,并通过抛出异常而不是返回正常值来指示是否可能。我们没有提供这样的API,所以这最终是Julia标准库的一个缺点,因为它现在就存在。我打开了一个问题来讨论这个API设计问题: https://github.com/JuliaLang/julia/issues/5704 我们会看看结果如何。 |
![]() |
Sairus · 朱莉娅:如何编写修改结构域的快速函数? 7 年前 |
![]() |
fatdragon · Julia中具有阵列广播的除法算子 7 年前 |
![]() |
Morpheu5 · 连接Julia数据帧,添加分类列 7 年前 |
![]() |
Adam Wheeler · julia中工人的局部变量访问 7 年前 |
|
Rcofrer · 从跳跃模型中提取右侧向量 7 年前 |
![]() |
ChrlTsr · 在Julia中使用角度时出错 7 年前 |
![]() |
4lrdyD · 如何在Julia中使用GSL? 7 年前 |
![]() |
dapias · 通过迭代字典定义新变量的有效方法(Julia) 7 年前 |
![]() |
tst · 朱莉娅:如何正确定义使用依赖于数字的类型的函数? 7 年前 |