获得徽章 0
- 软考高级《系统架构设计师》考试--调用/返回风格
调用返回风格顾名思义,就是指在系统中采用了调用与返回机制。利用调用-返回实际上是一种分治策略,其主要思想是将一个复杂的大系统分解为一些子系统,以便降低复杂度,并且增加可修改性。程序从其执行起点开始执行该构件的代码,程序执行结束,将控制返回给程序调用构件。
分为3个子类。
1,主程序/子程序
主程序/子程序风格是结构化开发时期的经典架构风格。这种风格一般采用单线程控制,把问题划分为若干处理步骤,构件即为主程序和子程序。子程序通常可合成为模块。过程调用作为交互机制,即充当连接件。调用关系具有层次性,其语义逻辑表现为子程序的正确性,取决于它调用的子程序的正确性。
2,面向对象
抽象数据类型概念对软件系统有着重要作用。这种风格建立在数据抽象和面向对象的基础上,数据的表示方法和它们的相应操作封装在对象中。这种风格的构件是对象。对象是一种被称作管理者的构件,因为它负责保持资源的完整性。对象是通过函数和过程的调用来交互的。
3,层次结构
构件组织成一个层次结构,连接件通过决定层间如何交互的协议 来定义。每层为上一层提供服务,使用下一层的服务,只能见到与自己邻接的层。通过层次结构,可以将大的问题分解为若干个渐进的小问题逐步解决,可以隐藏问题的复杂度。修改某一层,最多影响其相邻的两层。展开21 - Go VS Rust VS Kotlin,队列性能对比
Rust 中队列的选择。Rust生态中中有许多队列实现可选,经过测评,队列使用了 futures::channel::mpsc, 相比 tokio 自带的 tokio::sync::mpsc, 它在性能上,略有优势。
性能方面:
1.Golang 原生支持的协程和队列,性能非常优异,这一点并不奇怪,虽然 Golang 是带有 GC 的语言,但其没有虚拟机,会直接生成优化过的机器码,协程和队列是其语言的核心能力,在忽略了GC影响后,所以整体的性能最好。
2.Golang 对于 str_ptr 场景,基本没有内存分配,所以性能最好,也是直接反映了其调度和队列的性能,对于 int 的场景,当数字小于 256 ,其性能类似 str_ptr 的场景,没有内存分配,否则也会有一次内存分配,导致性能下降。
3.Rust 具有良好性能,但与 Golang 这种高度优化的仍有差距。
4.Kotlin 在协程数目少时,无法发挥所有CPU的能力,但在协程数增加后,也能够近乎达到 Rust/tokio 的性能,但与 Golang 仍有较大差距。展开21