RubyRussia2019。朱利安·波克罗夫斯基:如何优化整体

尽管有关整体优化的材料很多,但人们常常想逃避深入研究这个问题,而试图猜测如何使应用程序更快或更紧凑。 好消息:帕累托原理在这里起作用。 在9月28日举行的RubyRussia会议上, Julian Pokrovsky将讨论必要的技术。 朱利安(Julian)和格里高里彼得罗夫(Grigory Petrov)的采访中将会有几个戏s。

图片

您在IT,Ruby和您的兴趣,专业领域中会做什么?

我在Cupill工作。 在该项目中,我用Ruby和Rust后端编写了用于搜索,预订和购买机票的程序。 我对IT领域发生的各种事情都感兴趣:从编译器到分布式系统。 对机器学习和前端不是很感兴趣,但是也许有一天我也会到达那里。

告诉我您的报告是关于什么的?

我将介绍我们在优化8年历史的整体设计方面的经验,并说明它非常简单并且对每个人都有益。 并且有机会在sprint中为此分配时间。 通过查看一些不需要Rails并且不仅适用于Web应用程序的简单技巧和工具,可以提高性能。 我将告诉您有关解决问题的指导材料。 让我们看一下stackprof,rbspy,heapy,以及为什么对操作系统设置进行微不足道的更改(更改分配器)可以带来不可思议的好处。 而且为什么不对应用程序进行评估而从Internet上应用建议很不好。

有一个都市传说,如果我们比较四大语言(Ruby,Python,JavaScript和PHP)的语言,那么首先是JS,因为有等待和jit,在第二个PHP中,然后是Python,而Ruby则名列第四。地方,你怎么说,是吗?

我不倾向于否认Ruby在许多基准测试中表现不佳。 但是绝对不能说在任何情况下他都将排在最后。 更广泛地说,Ruby是一种语言标准。 我们可以谈论TruffleRuby,JRuby,MRI和性能问题。 这些都是非常个别的事情。 这完全取决于您如何编写代码以及想要获得什么。 在某些情况下,Ruby将是最快的,在某些Python中,并非没有理由在数据科学中流行,有时JavaScript将会是最快的。

现在,Ruby生态系统在何种程度上提供了快速的本地方法来解决常见问题?

我可以用不同的方式解释这个问题。 您现在可以谈论Ruby中C扩展的情况。 如果我们将问题缩小到这个范围,那么我们都知道:用于JSON序列化的OJ,用于MySQL的PostgreSQL驱动程序,用于MySQL的Ruby驱动程序以及许多其他东西都用C语言编写。 为了使jit编译器(可能是Ruby的未来)更好地优化代码,我们需要在Ruby中编写更多代码,并使用更少的扩展区。 这样编译器就可以做到这一点。 TruffleRuby有不同的方法。 据我所知,它允许您在不同语言之间进行优化,因此它被称为多语言vm。 再说一次,他还做得多么成功,我不愿意说。 TruffleRuby本身还是一个相当年轻的项目。

异步编程在Ruby世界中有哪些进步?

在我看来,最近没有发生过向异步Ruby的大规模迁移。 有一些单独的项目:成熟的EventMachine项目和Sam Williams项目async ,或者说是整个项目组,其中基于nio4r进行新的异步实现,它比EventMachine或Celluloid更简单。 但总的来说,历史虽然没有停滞不前,但走的却很小。 到目前为止,没有什么比这更重要了。 让我们看看接下来会发生什么。

我仍然看到很多基于并发-ruby线程的用法。 对于运行时生产率较高的语言而言,这不是一个糟糕的选择-使用释放GVL(全局锁定)并允许您同时发出并行HTTP请求或其他一些I / O操作的流。 也许将来光纤会更流行。 现在,它们构成了干-干效应小组的图书馆基础。 这仅允许您基于光纤执行一些并行操作。 不是同步,但不是完全异步-已经异步一半。

Ruby的作者Matsumoto-san参加了会议。 您觉得在聚会后和他讨论喝杯咖啡或一杯清酒对您有什么好处?

我已经在2016年在莫斯科见过松本。 我记得他当时说过,如果会议继续称为RailsClub,他就不会再来了。

是的,它被重命名为RubyRussia,这是一个更广泛的名称。 他再次访问我们。

然后我想到谁会赢,他还是RailsClub。 松本击败。 我想问一下他如何设法以这样的方式提出了一个问题,即他们改名了俄罗斯最大的Ruby事件。

我认为您将有机会亲自问这个问题。 Ruby的未来是什么? 您缺乏语言,生态系统方面的什么?

预测编程语言的命运是一项艰巨的任务,因为到目前为止,还没有人猜测任何一种语言的事件将如何发展。 我可能是错的,但是Ruby并不是当前新项目最受欢迎的选择。 许多人听说过“ Ruby已经死了,但是Rails被弃用了”:它速度慢,不异步,不并行,并且存在很多问题。 这会影响新的Ruby项目的数量吗? 我认为绝对可以。 它们正在变小,并且将变得更小。 但是旧项目仍然存在。 我认为,Ruby通过这种方式需要工具来支持复杂的大型应用程序。 在这种情况下,最好查看类型系统之类的附加内容。 正如我们在使用带有Flow和TypeScript的JavaScript所看到的那样,很多人都喜欢支持大型应用程序并进行开发,从而倾向于键入,这使得重构和监视复杂项目中的情况变得更加容易。 也许您需要创建一个更丰富的,需要独立使用的库生态系统,例如dry-rb。 一个人可以选择需要验证的内容,在某个子系统中建立效果的地方。 也许他需要依赖注入容器来解决某些问题。 生态系统应朝这个方向发展。 指向企业发展的方向,并支持大型和复杂的系统。

讨论RubyRussia!

来吧,您, 注册仍然开放。

不仅会有报告,而且还会有一些很棒的公司的立场:

主办单位-Evrone
一般合伙人-Toptal
金牌合作伙伴-Gett
银牌合作伙伴-ValarmJetBrainsBookmateCashwagon
铜牌合作伙伴-InSales

Source: https://habr.com/ru/post/zh-CN467461/


All Articles