gpt4 book ai didi

wolfram-mathematica - 设计方法 : Overloading vs Switch?

转载 作者:行者123 更新时间:2023-12-03 21:11:38 24 4
gpt4 key购买 nike

关于封装设计的性能和可扩展性,最好是:

  • ...“重载”函数名称(让 Mathematica 根据模式/条件/测试以及系统对定义的排序方式来整理出要使用的版本)?
  • ... 或者使用 Switch[](或类似命令)构造单个函数来直接求值?

  • Mathematica 的表现力经常让我对这样的愚蠢 (?) 问题感到困惑。

    最佳答案

    这是一个广泛的问题,但我将借此机会给出一个广泛的答案......

    我主张人们应该接受一种编程语言的主要范式,而不是试图与之抗争或编写遵循另一种语言习语的代码。 Mathematica 是围绕模式匹配的概念构建的,所以恕我直言,我们在尝试表达自己时应该始终首先考虑模式匹配。遵循这一原则,我更喜欢定义而不是 Switch .

    在性能问题上,在比较 Mathematica 结构时,越来越强调微基准测试让我越来越烦恼。虽然了解与构造相关的成本很有值(value),但我们应该注意 Knuth(或者是 Hoare?):“我们应该忘记小效率,大约 97% 的时间:过早优化是万恶之源”。 “邪恶”是程序失去可读性,为了效率,使用一些晦涩或间接的方法来实现效果。这是我的性能 list :

  • 性能有问题吗?如果没有,则跳过 list 的其余部分。
  • 性能瓶颈在哪里?分析器在这里有所帮助,但通常可以通过检查或一些打印语句轻松找到瓶颈。那么...
  • 算法效率低吗?非常频繁:是否有可以线性化或通过索引方案帮助的双嵌套循环?
  • 好的,算法很好,所以我想是时候进行微基准测试了。

  • 我不知道我对 Mathematica 的使用是否不够雄心勃勃,但大部分时间我都没有通过第 1 步。然后#3 捕获了其余的大部分。在 Mathematica 中,我发现我通常只是为我可以用少量代码执行一些雄心勃勃的任务而欣喜若狂——整体性能通常不会被考虑在内。

    呃,哦,我最好把肥皂盒收起来。对不起。

    关于wolfram-mathematica - 设计方法 : Overloading vs Switch?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8288701/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com