2020-05-28PHP实现的异步框架Workerman和模板技术
2021-02-02
WEB开发框架性能排名和趋势分析2-三项意外更改
Web框架性能排名
根据TechEmpower的“”性能基准测试进行的最新解释后,Round19(2020-05-28)列表在两年后发生了三个令人振奋的变化:
注意:带星号的项目支持完整的ORM和模板技术
一、神奇的锂电
C ++和Rust都仅提供编译时反射,因此有两种方法可以实现ORM。一种是带有生成器的生成器,它需要工具和预处理。一种是使用宏和模板技术来生成代码。
锂项目不同于其他风骚的混蛋。该代码是如此优雅和凌乱,并且性能惊人。锂(ORM)(RAW)已达到59.2%。尽管使用宏和模板有点乏味,但仍然值得一看。
与Rust的柴油相比php开发框架 排名,仅获得了24%的结果,还有很大的改进空间。 Golang的框架测试代码都没有ORM,因为Golang的反射机制仍然很慢,直接影响性能。
auto fortunes = sql_orm_schema(sql_db, "Fortune").fields( s::id(s::auto_increment, s::primary_key) = int(), s::message = std::string()); my_api.get("/fortunes") = [&](http_request& request, http_response& response) { sql_db.max_async_connections_per_thread_ = fortunes_nconn; typedef decltype(fortunes.all_fields()) fortune; std::vectortable; { auto c = fortunes.connect(request.fiber); c.forall([&] (const auto& f) { table.emplace_back(metamap_clone(f)); }); } table.emplace_back(0, "Additional fortune added at request time."); std::sort(table.begin(), table.end(), [] (const fortune& a, const fortune& b) { return a.message < b.message; }); li::growing_output_buffer ss; ss << " Fortunes "; response.set_header("Content-Type", "text/html; charset=utf-8"); response.write(ss.to_string_view()); };
"; for(auto& f : table) { ss << " id message "; } ss << " " << f.id << " "; escape_html_entities(ss, f.message); ss << "
二、可怕的工人
PHP一直热衷于使用低级代码来提高性能,但是由于各种原因,结果有限。尽管异步PHP框架的出现完全放弃了PHP的基本机制,从而极大地提高了性能并且没有引起重大变化,但纯PHP实现的异步框架Workerman可能会改变这种情况。使用Workerman的Ubiquity框架,它击败了许多框架并获得了第二名。性能已经提高了数十倍,这真是可怕。事实证明,PHP足够好,但是打开它的方法是错误的。
Act(ORM)(节奏):28.9%
普遍性(ORM)(PHP):28.1%
Actix(柴油)(HBS):23.6%
AspCore(EF)(ASP):23.3%
class Fortunes extends \Ubiquity\controllers\SimpleViewController { public function initialize() { \Ubiquity\cache\CacheManager::startProdFromCtrl(); } public function index() { $fortunes = SDAO::getAll(Fortune::class); $fortunes[] = new Fortune(0, 'Additional fortune added at request time.'); \usort($fortunes, function ($left, $right) { return $left->message <=> $right->message; }); $this->loadView('Fortunes/index.php', [ 'fortunes' => $fortunes ]); } }
三、意外的罗达
因为JavaScript使用Node.js的异步机制,所以JS框架的亮相是巅峰之作,其他脚本语言只能追赶。这次PHP进行了一次周转,让JavaScript领先,并突然落后了一步。
Ruby阵营的变化也使Ruby比JavaScript具有更多的优势。 Roda的性能已在Python的基础上翻了一番。在没有完全使用异步体系结构的情况下就是这种情况。php开发框架 排名,人们不禁期待。
脚本开发的性能排名将从JavaScript> Ruby> Python >>>>>>>>> PHP更改为PHP >>> Ruby> JavaScript> Python。 Python也从感觉良好转变为没有存在感的卑鄙行为。
static_get '/fortunes' do |_| @fortunes = Fortune.all @fortunes << Fortune.new( :id=>0, :message=>'Additional fortune added at request time.' ) @fortunes.sort_by!(&:message) view :fortunes end
时间表C ++ Drogon
排名:Drogon(RAW)(CSP):100%
Drogon(MORM)(CSP):81.6%
仓库:
锂
排名:锂(ORM)(RAW):59.2%
仓库:
RustActix-web
排名:Actix(RAW)(HBS):89.5%
Actix(柴油)(HBS):23.6%
仓库: