29 Matching Annotations
  1. Apr 2024
    1. 假设x为n维向量,在微分多元函数时经常使用以下规则: 对于所有A∈Rm×n,都有∇xAx=A⊤ 对于所有A∈Rn×m,都有∇xx⊤A=A 对于所有A∈Rn×n,都有∇xx⊤Ax=(A+A⊤)x ∇x‖x‖2=∇xx⊤x=2x 同样,对于任何矩阵X,都有∇X‖X‖F2=2X。 正如我们之后将看到的,梯度对于设计深度学习中的优化算法有很大用处。
  2. Dec 2022
  3. Aug 2022
    1. 底层通信协议支持选择 KCP 协议

      kcp优化

    2. 避免了等待与后端服务建立连接以及 frpc 和 frps 之间传递控制信息的时间。

      连接池优化

  4. Mar 2022
    1. 不幸的是,它被误解扭曲了。许多软件工程师将这一准则理解成"你永远不应该优化代码!",认为没有必要进行优化。 Tony Hoare 和 Donald Knuth 的真正意思是,代码微优化(例如,一条特定语句消耗多少 CPU 周期)之前,开发者应该担心其他问题。而且,原话并不是说:"在开发的早期阶段,关注程序的性能是有害的。" 他只是反对过早的优化。 以下几点理由,可以解释为什么不能忽视软件性能。程序员正确的做法应该是,在软件开发的早期阶段,就关注性能问题。 (1)性能问题不容易在软件开发的最后阶段解决。20%的代码占用了80%执行时间,它们可能散布在整个源代码中,不容易一次性修改解决。 (2)许多工程师相信,到软件发布时,CPU 的性能将会提高,以弥补部分代码的性能低下。尽管在1990年代确实如此,但在最近十年 CPU 性能非常有限。 (3)软件工程师认为,他们的时间比 CPU 时间更有价值。因此,浪费 CPU 周期以减少开发时间是对的。但是,他们忘记了,用户的时间比他们的时间更有价值。 (4)优化可能会导致产品延迟进入市场,并降低利润,这是正确的。但这种想法忽略了性能不佳的产品可能很难销售,尤其是在市场竞争激烈的情况下。 (5)有些程序员认为,几乎没有必要确保在软件的设计阶段,就使用最佳算法,先实现功能再说,因为以后总是可以替换更好的算法。所以,无需担心软件在开发阶段的性能,以后可以通过更好的算法对其进行提高。不幸的是,更好的算法在后期不一定可以实现,而且代码往往因为牵扯太多,无法轻易替换其中某个部分。

      过早优化的谬误

      优化是一个平衡

    1. 由图中可看到,每种设备都有两个指标: - 延时(响应时间):表示硬件的突发处理能力; - 带宽(吞吐量):代表硬件持续处理的能力。

    2. 大多数情况,性能最慢的设备会是瓶颈点。

      如,下载时网络速度可能会是瓶颈点,本地复制文件时硬盘可能是瓶颈点。

      为什么这些一般的工作能快速确认瓶颈点呢?

      因为我们队这些慢速设备的性能数据有一些基本的认识,如网络带宽是 2 Mbps,硬盘是每分钟 7200 转等等。

      (结论)因此,为了快速找到 SQL 的性能瓶颈点,需要了解计算机系统的硬件基本性能指标,如当前主流计算机性能指标数据。

    3. 数据库访问优化法则

      (目的):要正确的优化 SQL;

      (条件):需要快速定位性能的瓶颈点;

      (进一步阐释说明):即是快速找到 SQL 主要的开销在哪里?

    1. let msg = res.code != 0 ? res.msg || '操作失败' : res.msg || "操作成功";

      代码优化,可读性的衡量:

      let options = res.code != 0 ? { msg: '操作失败', icon: 2} : {msg: "操作成功", icon: 1};

      msg = res.msg || options.msg;