dockerfile/examples/omnivore/api/readabilityjs/test/test-pages/habr.com/source.html

1777 lines
208 KiB
HTML
Raw Normal View History

2024-03-15 14:52:38 +08:00
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width,initial-scale=1.0,viewport-fit=cover,maximum-scale=1,user-scalable=0" />
<meta name="referrer" content="unsafe-url" />
<title>
Js, трюки, наблюдения, бенчмарки и как Лиса уничтожает Хром. Я протестировал всё, что вам было лень / Хабр
</title>
<style>
<![CDATA[
/* cyrillic-ext */
@font-face {
font-family: 'Fira Sans';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url(https://fonts.gstatic.com/s/firasans/v11/va9B4kDNxMZdWfMOD5VnZKveSxf6TF0.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Fira Sans';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url(https://fonts.gstatic.com/s/firasans/v11/va9B4kDNxMZdWfMOD5VnZKveQhf6TF0.woff2) format('woff2');
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* latin-ext */
@font-face {
font-family: 'Fira Sans';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url(https://fonts.gstatic.com/s/firasans/v11/va9B4kDNxMZdWfMOD5VnZKveSBf6TF0.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Fira Sans';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url(https://fonts.gstatic.com/s/firasans/v11/va9B4kDNxMZdWfMOD5VnZKveRhf6.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* non-breaking hyphen */
@font-face {
font-family: 'Fira Sans';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url(https://fonts.gstatic.com/l/font?kit=KFOlCnqEu92Fr1MmEU9vBh0_IsHAlmrO6g&skey=ee881451c540fdec&v=v29) format('woff2');
unicode-range: U+02011;
}
]]>
</style>
<link rel="preload" href="https://assets.habr.com/habr-web/css/chunk-vendors.66f44d11.css" as="style" />
<link rel="preload" href="https://assets.habr.com/habr-web/js/chunk-vendors.a77133ed.js" as="script" />
<link rel="preload" href="https://assets.habr.com/habr-web/css/app.241f2690.css" as="style" />
<link rel="preload" href="https://assets.habr.com/habr-web/js/app.0c25557a.js" as="script" />
<link rel="preload" href="https://assets.habr.com/habr-web/js/8827.cdaee357.js" as="script" />
<link rel="stylesheet" href="https://assets.habr.com/habr-web/css/chunk-vendors.66f44d11.css" />
<link rel="stylesheet" href="https://assets.habr.com/habr-web/css/app.241f2690.css" />
<script type="text/javascript" async="async" src="https://www.google-analytics.com/analytics.js"></script>
<script async="async" src="https://mc.yandex.ru/metrika/tag.js"></script>
<script>
<![CDATA[
window.i18nFetch = new Promise((res, rej) => {
const xhr = new XMLHttpRequest();
xhr.open('GET', '/js/i18n/ru-compiled.391cccff11b8f5231dc5b9d41c7446ed.json');
xhr.responseType = 'json';
xhr.onload = function(e) {
if (this.status === 200) {
res({ru: xhr.response});
} else {
rej(e);
}
};
xhr.send();
});
]]>
</script>
<script data-vue-meta="ssr" type="application/ld+json" data-vmid="ldjson-schema">
<![CDATA[
{"@context":"http:\/\/schema.org","@type":"Article","mainEntityOfPage":{"@type":"WebPage","@id":"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/712386\/"},"headline":"Js, трюки, наблюдения, бенчмарки и как Лиса уничтожает Хром. Я протестировал всё, что вам было лень","datePublished":"2023-01-24T12:00:03+03:00","dateModified":"2023-01-27T18:16:12+03:00","author":{"@type":"Person","name":"programmerguru"},"publisher":{"@type":"Organization","name":"Habr","logo":{"@type":"ImageObject","url":"https:\/\/habrastorage.org\/webt\/a_\/lk\/9m\/a_lk9mjkccjox-zccjrpfolmkmq.png"}},"description":"Картинка, конечно, стронгли анрилейтед Разные трюки я тестировал на Google Chrome 107.0.5304.107 и Mozilla Firefox 107.0 на Windows 10. Чтобы результаты всегда...","url":"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/712386\/#post-content-body","about":["c_ruvds","h_hi","h_javascript","h_client_side_optimization","h_browsers","f_develop"],"image":["https:\/\/habr.com\/share\/publication\/712386\/ff74768c013a8fb6236b5cbace64588a\/","https:\/\/habrastorage.org\/webt\/ai\/z5\/gz\/aiz5gztttvvkegk_annvvgtumv8.png","https:\/\/habrastorage.org\/webt\/jw\/ux\/as\/jwuxasvbrmoo8bd08xz23xqzbmk.jpeg","https:\/\/habrastorage.org\/webt\/98\/bq\/py\/98bqpyb07ylqtmillpqva2ol6d8.jpeg","https:\/\/habrastorage.org\/webt\/ll\/t8\/wc\/llt8wc8317gsft-b-3hzsquks-u.jpeg","https:\/\/habrastorage.org\/webt\/5z\/c4\/an\/5zc4anssaguhuexso36fsymxo1w.jpeg","https:\/\/habrastorage.org\/webt\/ce\/a5\/mo\/cea5mooydemdi4kzpf2v8wtphjs.jpeg","https:\/\/habrastorage.org\/webt\/8-\/i5\/p4\/8-i5p4n-v3fvcckb41o7aue2a-m.jpeg","https:\/\/habrastorage.org\/webt\/2u\/ms\/at\/2umsat5-a9manougryyx3iohjhq.jpeg","https:\/\/habrastorage.org\/webt\/8k\/uq\/b0\/8kuqb0dhvsvodnu0djtqvmn_aoe.jpeg","https:\/\/habrastorage.org\/webt\/ey\/_-\/hs\/ey_-hsu2gbykaalxdwgvpg_itr0.jpeg","https:\/\/habrastorage.org\/webt\/po\/ue\/fz\/pouefzncq6xggwoxqyfnoy38wng.jpeg","https:\/\/habrastorage.org\/webt\/4f\/2l\/4-\/4f2l4-2wfg-pabfjrpgom4yx_ny.jpeg","https:\/\/habrastorage.org\/webt\/8b\/0g\/rb\/8b0grbqwue2slct2x4gc95sy4nc.jpeg","https:\/\/habrastorage.org\/webt\/sz\/7j\/pf\/sz7jpfj8i1pa6ocj-eia09dev4q.png"]}
]]>
</script>
<script src="//www.googletagservices.com/tag/js/gpt.js" async="async"></script>
<style>
<![CDATA[
.grecaptcha-badge{visibility: hidden;}
]]>
</style>
<meta name="habr-version" content="2.111.0" />
<meta data-vue-meta="ssr" property="fb:app_id" content="444736788986613" />
<meta data-vue-meta="ssr" property="fb:pages" content="472597926099084" />
<meta data-vue-meta="ssr" name="twitter:card" content="summary_large_image" />
<meta data-vue-meta="ssr" name="twitter:site" content="@habr_com" />
<meta data-vue-meta="ssr" property="og:site_name" content="Хабр" data-vmid="og:site_name" />
<meta data-vue-meta="ssr" property="og:title" content="Js, трюки, наблюдения, бенчмарки и как Лиса уничтожает Хром. Я протестировал всё, что вам было лень" data-vmid="og:title" />
<meta data-vue-meta="ssr" name="twitter:title" content="Js, трюки, наблюдения, бенчмарки и как Лиса уничтожает Хром. Я протестировал всё, что вам было лень" data-vmid="twitter:title" />
<meta data-vue-meta="ssr" name="aiturec:title" content="Js, трюки, наблюдения, бенчмарки и как Лиса уничтожает Хром. Я протестировал всё, что вам было лень" data-vmid="aiturec:title" />
<meta data-vue-meta="ssr" name="description" content="Картинка, конечно, стронгли анрилейтед Разные трюки я тестировал на Google Chrome 107.0.5304.107 и Mozilla Firefox 107.0 на Windows 10. Чтобы результаты всегда были железно воспроизводимыми, я..." data-vmid="description" />
<meta data-vue-meta="ssr" itemprop="description" content="Картинка, конечно, стронгли анрилейтед Разные трюки я тестировал на Google Chrome 107.0.5304.107 и Mozilla Firefox 107.0 на Windows 10. Чтобы результаты всегда были железно воспроизводимыми, я..." data-vmid="description:itemprop" />
<meta data-vue-meta="ssr" property="og:description" content="Картинка, конечно, стронгли анрилейтед Разные трюки я тестировал на Google Chrome 107.0.5304.107 и Mozilla Firefox 107.0 на Windows 10. Чтобы результаты всегда были железно воспроизводимыми, я..." data-vmid="og:description" />
<meta data-vue-meta="ssr" name="twitter:description" content="Картинка, конечно, стронгли анрилейтед Разные трюки я тестировал на Google Chrome 107.0.5304.107 и Mozilla Firefox 107.0 на Windows 10. Чтобы результаты всегда были железно воспроизводимыми, я..." data-vmid="twitter:description" />
<meta data-vue-meta="ssr" property="aiturec:description" content="Картинка, конечно, стронгли анрилейтед Разные трюки я тестировал на Google Chrome 107.0.5304.107 и Mozilla Firefox 107.0 на Windows 10. Чтобы результаты всегда были железно воспроизводимыми, я..." data-vmid="aiturec:description" />
<meta data-vue-meta="ssr" itemprop="image" content="https://habrastorage.org/webt/ai/z5/gz/aiz5gztttvvkegk_annvvgtumv8.png" data-vmid="image:itemprop" />
<meta data-vue-meta="ssr" property="og:image" content="https://habrastorage.org/webt/ai/z5/gz/aiz5gztttvvkegk_annvvgtumv8.png" data-vmid="og:image" />
<meta data-vue-meta="ssr" property="og:image:width" content="1200" data-vmid="og:image:width" />
<meta data-vue-meta="ssr" property="og:image:height" content="630" data-vmid="og:image:height" />
<meta data-vue-meta="ssr" property="aiturec:image" content="https://habrastorage.org/webt/ai/z5/gz/aiz5gztttvvkegk_annvvgtumv8.png" data-vmid="aiturec:image" />
<meta data-vue-meta="ssr" name="twitter:image" content="https://habrastorage.org/webt/ai/z5/gz/aiz5gztttvvkegk_annvvgtumv8.png" data-vmid="twitter:image" />
<meta data-vue-meta="ssr" property="vk:image" content="https://habrastorage.org/webt/ai/z5/gz/aiz5gztttvvkegk_annvvgtumv8.png?format=vk" data-vmid="vk:image" />
<meta data-vue-meta="ssr" property="aiturec:item_id" content="712386" data-vmid="aiturec:item_id" />
<meta data-vue-meta="ssr" property="aiturec:datetime" content="2023-01-24T09:00:03.000Z" data-vmid="aiturec:datetime" />
<meta data-vue-meta="ssr" content="https://habr.com/ru/company/ruvds/blog/712386/" property="og:url" data-vmid="og:url" />
<meta data-vue-meta="ssr" property="og:type" content="article" data-vmid="og:type" />
<meta data-vue-meta="ssr" property="og:locale" content="ru_RU" data-vmid="og:locale" />
<meta data-vue-meta="ssr" name="keywords" content="javascript, google chrome, mozilla firefox, браузеры, высокая производительность, оптимизация, ruvds_статьи" />
<link data-vue-meta="ssr" href="https://habr.com/ru/rss/post/712386/?fl=ru" type="application/rss+xml" title="" rel="alternate" name="rss" />
<link data-vue-meta="ssr" href="https://habr.com/ru/company/ruvds/blog/712386/" rel="canonical" data-vmid="canonical" />
<link data-vue-meta="ssr" rel="image_src" href="https://habrastorage.org/webt/ai/z5/gz/aiz5gztttvvkegk_annvvgtumv8.png" data-vmid="image:href" />
<meta name="apple-mobile-web-app-status-bar-style" content="#303b44" />
<meta name="msapplication-TileColor" content="#629FBC" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="mobile-web-app-capable" content="yes" />
<link rel="shortcut icon" type="image/png" sizes="16x16" href="https://assets.habr.com/habr-web/img/favicons/favicon-16.png" />
<link rel="shortcut icon" type="image/png" sizes="32x32" href="https://assets.habr.com/habr-web/img/favicons/favicon-32.png" />
<link rel="apple-touch-icon" type="image/png" sizes="76x76" href="https://assets.habr.com/habr-web/img/favicons/apple-touch-icon-76.png" />
<link rel="apple-touch-icon" type="image/png" sizes="120x120" href="https://assets.habr.com/habr-web/img/favicons/apple-touch-icon-120.png" />
<link rel="apple-touch-icon" type="image/png" sizes="152x152" href="https://assets.habr.com/habr-web/img/favicons/apple-touch-icon-152.png" />
<link rel="apple-touch-icon" type="image/png" sizes="180x180" href="https://assets.habr.com/habr-web/img/favicons/apple-touch-icon-180.png" />
<link rel="apple-touch-icon" type="image/png" sizes="256x256" href="https://assets.habr.com/habr-web/img/favicons/apple-touch-icon-256.png" />
<link rel="apple-touch-startup-image" media="screen and (device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)" href="https://assets.habr.com/habr-web/img/splashes/splash_1136x640.png" />
<link rel="apple-touch-startup-image" media="screen and (device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)" href="https://assets.habr.com/habr-web/img/splashes/splash_2436x1125.png" />
<link rel="apple-touch-startup-image" media="screen and (device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)" href="https://assets.habr.com/habr-web/img/splashes/splash_1792x828.png" />
<link rel="apple-touch-startup-image" media="screen and (device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="https://assets.habr.com/habr-web/img/splashes/splash_828x1792.png" />
<link rel="apple-touch-startup-image" media="screen and (device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)" href="https://assets.habr.com/habr-web/img/splashes/splash_1334x750.png" />
<link rel="apple-touch-startup-image" media="screen and (device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)" href="https://assets.habr.com/habr-web/img/splashes/splash_1242x2668.png" />
<link rel="apple-touch-startup-image" media="screen and (device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)" href="https://assets.habr.com/habr-web/img/splashes/splash_2208x1242.png" />
<link rel="apple-touch-startup-image" media="screen and (device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)" href="https://assets.habr.com/habr-web/img/splashes/splash_1125x2436.png" />
<link rel="apple-touch-startup-image" media="screen and (device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)" href="https://assets.habr.com/habr-web/img/splashes/splash_1242x2208.png" />
<link rel="apple-touch-startup-image" media="screen and (device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)" href="https://assets.habr.com/habr-web/img/splashes/splash_2732x2048.png" />
<link rel="apple-touch-startup-image" media="screen and (device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)" href="https://assets.habr.com/habr-web/img/splashes/splash_2688x1242.png" />
<link rel="apple-touch-startup-image" media="screen and (device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)" href="https://assets.habr.com/habr-web/img/splashes/splash_2224x1668.png" />
<link rel="apple-touch-startup-image" media="screen and (device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="https://assets.habr.com/habr-web/img/splashes/splash_750x1334.png" />
<link rel="apple-touch-startup-image" media="screen and (device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="https://assets.habr.com/habr-web/img/splashes/splash_2048x2732.png" />
<link rel="apple-touch-startup-image" media="screen and (device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)" href="https://assets.habr.com/habr-web/img/splashes/splash_2388x1668.png" />
<link rel="apple-touch-startup-image" media="screen and (device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="https://assets.habr.com/habr-web/img/splashes/splash_1668x2224.png" />
<link rel="apple-touch-startup-image" media="screen and (device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="https://assets.habr.com/habr-web/img/splashes/splash_640x1136.png" />
<link rel="apple-touch-startup-image" media="screen and (device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="https://assets.habr.com/habr-web/img/splashes/splash_1668x2388.png" />
<link rel="apple-touch-startup-image" media="screen and (device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)" href="https://assets.habr.com/habr-web/img/splashes/splash_2048x1536.png" />
<link rel="apple-touch-startup-image" media="screen and (device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="https://assets.habr.com/habr-web/img/splashes/splash_1536x2048.png" />
<link rel="mask-icon" color="#77a2b6" href="https://assets.habr.com/habr-web/img/favicons/apple-touch-icon-120.svg" />
<link crossorigin="use-credentials" href="/manifest.webmanifest" rel="manifest" />
<script async="async" src="https://unpkg.com/pwacompat" crossorigin="anonymous"></script>
<script>
<![CDATA[
window.yaContextCb = window.yaContextCb || []
]]>
</script>
<script src="https://yandex.ru/ads/system/context.js" async="async"></script>
<meta http-equiv="origin-trial" content="Az6AfRvI8mo7yiW5fLfj04W21t0ig6aMsGYpIqMTaX60H+b0DkO1uDr+7BrzMcimWzv/X7SXR8jI+uvbV0IJlwYAAACFeyJvcmlnaW4iOiJodHRwczovL2RvdWJsZWNsaWNrLm5ldDo0NDMiLCJmZWF0dXJlIjoiUHJpdmFjeVNhbmRib3hBZHNBUElzIiwiZXhwaXJ5IjoxNjgwNjUyNzk5LCJpc1N1YmRvbWFpbiI6dHJ1ZSwiaXNUaGlyZFBhcnR5Ijp0cnVlfQ==" />
<meta http-equiv="origin-trial" content="A+USTya+tNvDPaxUgJooz+LaVk5hPoAxpLvSxjogX4Mk8awCTQ9iop6zJ9d5ldgU7WmHqBlnQB41LHHRFxoaBwoAAACLeyJvcmlnaW4iOiJodHRwczovL2dvb2dsZXN5bmRpY2F0aW9uLmNvbTo0NDMiLCJmZWF0dXJlIjoiUHJpdmFjeVNhbmRib3hBZHNBUElzIiwiZXhwaXJ5IjoxNjgwNjUyNzk5LCJpc1N1YmRvbWFpbiI6dHJ1ZSwiaXNUaGlyZFBhcnR5Ijp0cnVlfQ==" />
<meta http-equiv="origin-trial" content="A7FovoGr67TUBYbnY+Z0IKoJbbmRmB8fCyirUGHavNDtD91CiGyHHSA2hDG9r9T3NjUKFi6egL3RbgTwhhcVDwUAAACLeyJvcmlnaW4iOiJodHRwczovL2dvb2dsZXRhZ3NlcnZpY2VzLmNvbTo0NDMiLCJmZWF0dXJlIjoiUHJpdmFjeVNhbmRib3hBZHNBUElzIiwiZXhwaXJ5IjoxNjgwNjUyNzk5LCJpc1N1YmRvbWFpbiI6dHJ1ZSwiaXNUaGlyZFBhcnR5Ijp0cnVlfQ==" />
<script src="https://securepubads.g.doubleclick.net/gpt/pubads_impl_2023020701.js" async="async"></script>
<link rel="stylesheet" type="text/css" href="https://assets.habr.com/habr-web/css/gallery.0c0f74ca.css" />
<script data-vue-meta="ssr" onload="window['e0044d29c024'] = true" src="https://habr.com/auth/checklogin/" data-vmid="checklogin"></script>
<link rel="preconnect" href="https://yastatic.net/" />
<link rel="preconnect" href="https://avatars.mds.yandex.net/" />
<link rel="preconnect" href="https://mc.yandex.ru/" />
<link rel="preconnect" href="https://ads.adfox.ru" />
<script async="async" crossorigin="anonymous" src="https://yastatic.net/safeframe-bundles/0.83/host.js"></script>
<link rel="preload" href="https://yastatic.net/s3/home/fonts/ys/3/text-variable-full.woff2" type="font/woff2" as="font" crossorigin="anonymous" />
<style id="ysTextCssRule">
<![CDATA[
@font-face {
font-family: "YS Text Variable";
src: url("https://yastatic.net/s3/home/fonts/ys/3/text-variable-full.woff2") format("woff2");
font-weight: 400 700;
font-display: optional;
}
]]>
</style>
<link rel="icon" href="https://habr.com/img/maskable_icon.png" sizes="512x512" />
<link rel="icon" href="https://habr.com/img/maskable_icon.png" sizes="384x384" />
<link rel="icon" href="https://habr.com/img/maskable_icon.png" sizes="256x256" />
<link rel="icon" href="https://habr.com/img/maskable_icon.png" sizes="192x192" />
<link rel="icon" href="https://habr.com/img/maskable_icon.png" sizes="152x152" />
<link rel="icon" href="https://habr.com/img/maskable_icon.png" sizes="144x144" />
<link rel="icon" href="https://habr.com/img/maskable_icon.png" sizes="128x128" />
<link rel="icon" href="https://habr.com/img/maskable_icon.png" sizes="96x96" />
<link rel="icon" href="https://habr.com/img/maskable_icon.png" sizes="72x72" />
<meta name="theme-color" content="#303b44" />
<meta name="x5-page-mode" content="app" />
<meta name="browsermode" content="application" />
</head>
<body>
<div id="app" data-async-called="true">
<div class="tm-layout__wrapper">
<!----><!---->
<header class="tm-header">
<div class="tm-page-width">
<div class="tm-header__container">
<!----><span class="tm-header__logo-wrap"><a href="/ru/" class="tm-header__logo tm-header__logo_ru"><svg height="16" width="16" class="tm-svg-img tm-header__icon">
<title>
Хабр
</title>
<use xlink:href="/img/habr-logo-ru.svg#logo"></use></svg></a> <span class="tm-header__beta-sign" style="display:none;">β</span></span>
<div class="tm-dropdown tm-header__projects">
<div class="tm-dropdown__head">
<button class="tm-header__dropdown-toggle"><svg height="16" width="16" class="tm-svg-img tm-header__icon tm-header__icon_dropdown">
<title>
Открыть список
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#arrow-down"></use></svg></button>
</div><!---->
</div><a href="/ru/sandbox/start/" class="tm-header__become-author-btn">Как стать автором</a>
<div class="tm-feature tm-header__feature tm-feature tm-feature_variant-inline">
<a href="https://effect.habr.com/a/c4XjQXKmqVqWAdYtTDn91A2Ap9iwC0K9Q6tHhkKXamWhbvKKjKxCESFP5SC85CiK4sIzq7QPlNyf0t__q2TJBOgScQp34juvcxzo9JMgz--K2a8LMfCqXNFRlkg3" rel="noopener" target="_blank" class="tm-feature__link"><img alt="" height="20" src="https://effect.habr.com/a/DR5R46s_inu0_1V75-oLA7KRXL1J0W_iPLVoC2QeAEJxBxveGbYE3HDE6anJbc41uR8q505I5Sbcood76p1lcnsGeAtApshZS0ROccv4JV0BrlVbLqOgiO8YgZ2mDj0qT77IKBCPLnQmevYv_rQBQ2P6KwEqbL0DeB2IKy1ayWF5K13Z-p1SOJCUwQMsUoijI_xzTghwXCo" width="20" class="tm-feature__icon" /> Зарплаты айтишников</a>
</div><a href="https://effect.habr.com/a/0MHlSh5-91bBAkzcmIFrVU5rXgJyDmjOY1MsNovNKyxSecY87cXwro-8LxQiYwWY_g6HjOnQExBk6LaVWOubXrV6KsisOfJLp16eSSYGz0k7bNcAk0UCs7VRJVJEqouTvZvzXLQ" target="_blank" class="tm-top-link" style="color: rgb(255, 162, 153);">Подкаст про дзен между разработкой и продуктом</a> <!---->
</div>
</div>
</header>
<div class="tm-layout">
<div class="tm-page-progress-bar"></div>
<div data-menu-sticky="true" class="tm-base-layout__header tm-base-layout__header_is-sticky">
<div class="tm-page-width">
<div class="tm-base-layout__header-wrapper">
<div class="tm-main-menu">
<div class="tm-main-menu__section">
<nav class="tm-main-menu__section-content">
<!----> <a href="/ru/all/" class="tm-main-menu__item">Все потоки</a> <a href="/ru/flows/develop/" class="tm-main-menu__item">Разработка</a> <a href="/ru/flows/admin/" class="tm-main-menu__item">Администрирование</a> <a href="/ru/flows/design/" class="tm-main-menu__item">Дизайн</a> <a href="/ru/flows/management/" class="tm-main-menu__item">Менеджмент</a> <a href="/ru/flows/marketing/" class="tm-main-menu__item">Маркетинг</a> <a href="/ru/flows/popsci/" class="tm-main-menu__item">Научпоп</a>
</nav>
</div>
</div>
<div class="tm-header-user-menu tm-base-layout__user-menu">
<a href="/ru/search/" class="tm-header-user-menu__item tm-header-user-menu__search"><svg height="24" width="24" class="tm-svg-img tm-header-user-menu__icon tm-header-user-menu__icon_search tm-header-user-menu__icon_dark">
<title>
Поиск
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#search"></use></svg></a> <!----> <!----> <!---->
<div class="tm-header-user-menu__item tm-header-user-menu__user_desktop">
<div class="tm-dropdown">
<div class="tm-dropdown__head">
<svg height="24" width="24" data-test-id="menu-toggle-guest" class="tm-svg-img tm-header-user-menu__icon tm-header-user-menu__icon_dark">
<title>
Профиль
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#header-user"></use></svg> <!---->
</div><!---->
</div><!---->
</div><!---->
</div>
</div>
</div>
</div><button class="tm-scroll-top"><span title="Наверх" class="tm-svg-icon__wrapper tm-scroll-top__arrow"><svg height="16" width="16" class="tm-svg-img tm-svg-icon">
<title>
Наверх
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#small-arrow"></use></svg></span></button>
<div class="tm-page-width"></div>
<main class="tm-layout__container">
<div hl="ru" companyname="ruvds" data-async-called="true" class="tm-page">
<div class="tm-page-width">
<div class="tm-page__header">
<div class="tm-company-card__branding tm-company-article__branding">
<!----><a href="https://ruvds.com/ru/windows/?utm_source=habr&amp;utm_medium=banner&amp;utm_campaign=promo&amp;utm_content=link&amp;utm_term=windows"><img src="//habrastorage.org/getpro/habr/branding/ea2/32a/1c4/ea232a1c4d3c4f31e800a2221c764b84.jpg" width="100%" class="tm-company-card__branding-image" /></a>
</div>
</div>
<div class="tm-page__wrapper">
<div class="tm-page__main tm-page__main_has-sidebar">
<div class="pull-down">
<!---->
<div class="pull-down__header" style="height:0px;">
<div class="pull-down__content" style="bottom:10px;">
<svg height="24" width="24" class="tm-svg-img pull-down__arrow">
<title>
Обновить
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#pull-arrow"></use></svg>
</div>
</div>
<div class="tm-article-presenter">
<div class="tm-company-profile-card tm-company-article__profile-card">
<div class="tm-company-card tm-company-profile-card__info">
<div class="tm-company-card__header">
<a href="/ru/company/ruvds/profile/" class="tm-company-card__avatar">
<div class="tm-entity-image">
<img alt="" height="48" src="//habrastorage.org/getpro/habr/company/027/b19/cea/027b19cea984722a8d806edcc56c2c00.png" width="48" class="tm-entity-image__pic" />
</div></a> <!---->
<div class="tm-rating tm-company-card__rating">
<div class="tm-rating__header">
<div class="tm-rating__counter tm-rating__counter">
2231.74
</div>
</div>
<div class="tm-rating__text tm-rating__text">
Рейтинг
</div>
</div><!---->
</div>
<div class="tm-company-card__info">
<a href="/ru/company/ruvds/profile/" class="tm-company-card__name">RUVDS.com</a>
<div class="tm-company-card__description">
VDS/VPS-хостинг. Скидка 10% по коду <b>HABR10</b>
</div>
</div>
</div><!---->
</div>
<div class="tm-article-presenter__body">
<div class="tm-misprint-area">
<div class="tm-misprint-area__wrapper">
<article class="tm-article-presenter__content tm-article-presenter__content_narrow">
<div class="tm-article-presenter__header">
<div class="tm-article-snippet tm-article-presenter__snippet tm-article-snippet">
<div class="tm-article-snippet__meta-container">
<div class="tm-article-snippet__meta">
<span class="tm-user-info tm-article-snippet__author"><a href="/ru/users/programmerguru/" title="programmerguru" class="tm-user-info__userpic">
<div class="tm-entity-image">
<span class="tm-user-info tm-article-snippet__author"><img alt="" height="24" src="//habrastorage.org/r/w32/getpro/habr/avatars/840/b65/91d/840b6591d105ef0aedde365a3b4ec765.png" width="24" class="tm-entity-image__pic" /></span>
</div></a> <span class="tm-user-info__user"><a href="/ru/users/programmerguru/" class="tm-user-info__username">programmerguru <!----></a> <span class="tm-article-snippet__datetime-published"><time datetime="2023-01-24T09:00:03.000Z" title="2023-01-24, 17:00">24 янв в 17:00</time></span></span></span>
</div><!---->
</div>
<h1 lang="ru" class="tm-article-snippet__title tm-article-snippet__title_h1" xml:lang="ru">
<span>Js, трюки, наблюдения, бенчмарки и как Лиса уничтожает Хром. Я протестировал всё, что вам было лень</span>
</h1>
<div class="tm-article-snippet__stats">
<!---->
<div class="tm-article-reading-time">
<span class="tm-svg-icon__wrapper tm-article-reading-time__icon"><svg height="24" width="24" class="tm-svg-img tm-svg-icon">
<title>
Время прочтения
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#clock"></use></svg></span> <span class="tm-article-reading-time__label">4 мин</span>
</div><span title="Количество просмотров" class="tm-icon-counter tm-data-icons__item"><svg height="24" width="24" class="tm-svg-img tm-icon-counter__icon">
<title>
Просмотры
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#counter-views"></use></svg> <span class="tm-icon-counter__value">22K</span></span>
</div>
<div class="tm-article-snippet__hubs-container">
<div class="tm-article-snippet__hubs">
<span class="tm-article-snippet__hubs-item"><a href="/ru/company/ruvds/blog/" class="tm-article-snippet__hubs-item-link router-link-active"><span>Блог компании RUVDS.com</span> <!----></a></span><span class="tm-article-snippet__hubs-item"><a href="/ru/hub/hi/" class="tm-article-snippet__hubs-item-link"><span>Высокая производительность</span> <span title="Профильный хаб" class="tm-article-snippet__profiled-hub">*</span></a></span><span class="tm-article-snippet__hubs-item"><a href="/ru/hub/javascript/" class="tm-article-snippet__hubs-item-link"><span>JavaScript</span> <span title="Профильный хаб" class="tm-article-snippet__profiled-hub">*</span></a></span><span class="tm-article-snippet__hubs-item"><a href="/ru/hub/client_side_optimization/" class="tm-article-snippet__hubs-item-link"><span>Клиентская оптимизация</span> <span title="Профильный хаб" class="tm-article-snippet__profiled-hub">*</span></a></span><span class="tm-article-snippet__hubs-item"><a href="/ru/hub/browsers/" class="tm-article-snippet__hubs-item-link"><span>Браузеры</span> <!----></a></span>
</div>
</div><!----><!----><!---->
</div>
</div><!---->
<div data-gallery-root="" lang="ru" class="tm-article-body" xml:lang="ru">
<div id="post-content-body">
<div>
<div class="article-formatted-body article-formatted-body article-formatted-body_version-1">
<div xmlns="http://www.w3.org/1999/xhtml">
<a href="https://habr.com/ru/company/ruvds/blog/712386/">
<div style="text-align:center;">
<img src="https://habrastorage.org/r/w1560/webt/ai/z5/gz/aiz5gztttvvkegk_annvvgtumv8.png" data-src="https://habrastorage.org/webt/ai/z5/gz/aiz5gztttvvkegk_annvvgtumv8.png" />
</div></a><i><font color="#999999">Картинка, конечно, стронгли анрилейтед</font></i><br />
<br />
Разные трюки я тестировал на Google Chrome 107.0.5304.107 и Mozilla Firefox 107.0 на Windows 10.<br />
<br />
Чтобы результаты всегда были железно воспроизводимыми, я отключил все С-Stateы, ядра зафиксировал на 5 ГГц.<br />
<br />
У меня 9900К, это Coffee Lake c AVX256, какие оптимизации применит Jit для вашего процессора — я не знаю, результат на вашем компьютере может отличаться от моего, в т.ч. из-за микроархитектуры процессора.<br />
<br />
Скорость парсинга кода тоже входит в бенчмарк, поэтому браузер с быстрым парсером будет впереди.<br />
<a name="habracut" id="habracut"></a><br />
<h2>
<font color="#3AC1EF">Есть ли у переменной оверхед?</font>
</h2><br />
Есть ли смысл использовать только dot notation? Какова цена выноса лишней переменной?<br />
<br />
<pre><code class="javascript hljs"><span class="hljs-keyword">var</span> array = <span class="hljs-keyword">new</span> <span class="hljs-built_in">Array</span>(<span class="hljs-number">65535</span>).fill()
<span class="hljs-comment">// 3</span>
<span class="hljs-keyword">var</span> a = array.map(<span class="hljs-function">(<span class="hljs-params">x</span>) =&gt;</span> x)
<span class="hljs-keyword">var</span> b = array.map(<span class="hljs-function">(<span class="hljs-params">x</span>) =&gt;</span> x)
<span class="hljs-keyword">var</span> c = array.map(<span class="hljs-function">(<span class="hljs-params">x</span>) =&gt;</span> x)
<span class="hljs-comment">// 2</span>
<span class="hljs-keyword">var</span> a = array.map(<span class="hljs-function">(<span class="hljs-params">x</span>) =&gt;</span> x)
<span class="hljs-keyword">var</span> b = array.map(<span class="hljs-function">(<span class="hljs-params">x</span>) =&gt;</span> x).map(<span class="hljs-function">(<span class="hljs-params">x</span>) =&gt;</span> x)
<span class="hljs-comment">// 1</span>
<span class="hljs-keyword">var</span> a = array.map(<span class="hljs-function">(<span class="hljs-params">x</span>) =&gt;</span> x).map(<span class="hljs-function">(<span class="hljs-params">x</span>) =&gt;</span> x).map(<span class="hljs-function">(<span class="hljs-params">x</span>) =&gt;</span> x)</code></pre><br />
Чтобы узнать, гоняет ли браузер память туда-сюда, делаем мы <code>.map</code> на массив длиной 65535 с нулями внутри. <a href="https://www.measurethat.net/Benchmarks/Show/22097/0/1-var-vs-2-vars-vs-3-vars">Линк</a>.<br />
<br />
<div style="text-align:center;"></div><i><font color="#999999">Здесь и далее в качестве единицы измерения на графиках будет указано кол-во выполнений кода в секунду, включая парсинг и компиляцию. Больше — лучше</font></i><br />
<br />
Хром не заметил разницы, а вот лиса заметила. Применительно к лисе, у лишней переменной есть измеряемый оверхед.<br />
<br />
<h2>
<font color="#3AC1EF">Есть ли разница между var, let, const или их отсутствием?</font>
</h2><br />
<div style="text-align:center;"></div><br />
Проверим. Используя разные биндинги — создадим POJO с переменной <code>е</code>. Потом добавим ему функцию <code>о</code> и запустим эту функцию. Бенчмарк простой, но движущихся частей много. <a href="https://www.measurethat.net/Benchmarks/Show/22083/0/const-vs-let-vs-var-vs-sloppy">Линк</a>.<br />
<br />
<pre><code class="javascript hljs"><span class="hljs-keyword">var</span> g = { <span class="hljs-attr">e</span>: [] }
g.o = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">x</span>) </span>{ g.e.push(...[<span class="hljs-number">1</span>,<span class="hljs-number">2</span>,<span class="hljs-number">3</span>]) }
g.o()</code></pre><br />
Код выглядит так, отличаются только биндинги.<br />
<br />
<div style="text-align:center;"></div><br />
Результат неожиданный, но железно воспроизводимый. <code>var</code>, быстрее.<br />
<br />
<h2>
<font color="#3AC1EF">Bounce pattern, Switch case, длинная тернарка</font>
</h2><br />
Если обе конструкции логически одинаковые, они должны строить одно и то же синтаксическое дерево, верно? Давайте проверим.<br />
<br />
<pre><code class="javascript hljs"><span class="hljs-comment">// switch case</span>
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">thing</span>(<span class="hljs-params">e</span>) </span>{
<span class="hljs-keyword">switch</span> (e) {
<span class="hljs-keyword">case</span> <span class="hljs-number">0</span>:
<span class="hljs-keyword">return</span> <span class="hljs-string">"0"</span>;
<span class="hljs-keyword">case</span> <span class="hljs-number">1</span>:
<span class="hljs-keyword">return</span> <span class="hljs-string">"1"</span>;
<span class="hljs-keyword">case</span> <span class="hljs-number">2</span>:
<span class="hljs-keyword">return</span> <span class="hljs-string">"2"</span>;
<span class="hljs-keyword">case</span> <span class="hljs-number">3</span>:
<span class="hljs-keyword">return</span> <span class="hljs-string">"3"</span>;
<span class="hljs-keyword">default</span>:
<span class="hljs-keyword">return</span> <span class="hljs-string">""</span>;
}
}
<span class="hljs-comment">// bounce pattern</span>
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">bounce</span>(<span class="hljs-params">x</span>)
</span>{
<span class="hljs-keyword">if</span> (x === <span class="hljs-number">0</span>) <span class="hljs-keyword">return</span> <span class="hljs-string">"0"</span>;
<span class="hljs-keyword">if</span> (x === <span class="hljs-number">1</span>) <span class="hljs-keyword">return</span> <span class="hljs-string">"1"</span>;
<span class="hljs-keyword">if</span> (x === <span class="hljs-number">2</span>) <span class="hljs-keyword">return</span> <span class="hljs-string">"2"</span>;
<span class="hljs-keyword">if</span> (x === <span class="hljs-number">3</span>) <span class="hljs-keyword">return</span> <span class="hljs-string">"3"</span>;
<span class="hljs-keyword">return</span> <span class="hljs-string">""</span>
}
<span class="hljs-comment">// ternary</span>
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">bounce</span>(<span class="hljs-params">x</span>) </span>{
<span class="hljs-keyword">return</span> <span class="hljs-number">0</span> === x ? <span class="hljs-string">"0"</span> : <span class="hljs-number">1</span> === x ? <span class="hljs-string">"1"</span> : <span class="hljs-number">2</span> === x ? <span class="hljs-string">"2"</span> : <span class="hljs-number">3</span> === x ? <span class="hljs-string">"3"</span> : <span class="hljs-string">""</span>;
}</code></pre><br />
Вот так выглядит код. Для всех вариантов он одинаков, отличаются только вызовы.<br />
<br />
<h3>
<font color="#3AC1EF">▍ 1. Вызов в цикле</font>
</h3><br />
<pre><code class="javascript hljs"><span class="hljs-keyword">for</span> (<span class="hljs-keyword">let</span> t = <span class="hljs-number">0</span>; <span class="hljs-number">1e5</span> &gt; t; t++) bounce(<span class="hljs-number">0</span>), bounce(<span class="hljs-number">2</span>), bounce(<span class="hljs-number">6</span>);</code></pre><br />
Вызов выглядит так. <a href="https://www.measurethat.net/Benchmarks/Show/22099/0/no-type-coercion-switch-case-vs-bounce-pattern-vs-terna">Линк</a>.<br />
<br />
<div style="text-align:center;"></div><br />
<h3>
<font color="#3AC1EF">▍ 2. В цикле с другим типом</font>
</h3><br />
<pre><code class="javascript hljs"><span class="hljs-keyword">for</span> (<span class="hljs-keyword">let</span> t = <span class="hljs-number">0</span>; <span class="hljs-number">1e5</span> &gt; t; t++) bounce(<span class="hljs-string">"0"</span>), bounce(<span class="hljs-string">"2"</span>), bounce(<span class="hljs-string">""</span>);</code></pre><br />
Тут мы покидываем строку вместо числа. В свитче и <code>if</code> блоках используется строгое равенство, поэтому свитч выходит только через <code>default</code>, а <code>if</code>’ы выходят только последний <code>return</code>. <a href="https://www.measurethat.net/Benchmarks/Show/22098/0/type-coercion-switch-case-vs-bounce-pattern-vs-ternary">Линк</a>.<br />
<br />
<div style="text-align:center;"></div><br />
<h3>
<font color="#3AC1EF">▍ 3. Без цикла</font>
</h3><br />
<pre><code class="javascript hljs">bounce(<span class="hljs-number">0</span>), bounce(<span class="hljs-number">2</span>), bounce(<span class="hljs-number">6</span>)</code></pre><br />
Просто три вызова подряд, никаких циклов. <a href="https://www.measurethat.net/Benchmarks/Show/22100/0/no-loop-switch-case-vs-bounce-pattern-vs-ternary">Линк</a>.<br />
<br />
<div style="text-align:center;"></div><br />
Похоже, что после первоначальной компиляции лиса не пытается дальше оптимизировать цикл, как это делает хром.<br />
<br />
Также лиса, похоже, не строит одно и то же AST, как это делает хром. Рекомендую заменить ваши длинные <code>if</code>’ы и bounce паттерны на свитчи, чтобы избежать лисиных тормозов.<br />
<br />
<h2>
<font color="#3AC1EF">Инициализация массива</font>
</h2><br />
Для примера возьму из паттернов функционального программирования, когда ты инициализируешь массив, прокидывая лямбду в инициализатор. Просто ради примера, в качестве этой лямбды будет fizzbuzz.<br />
<br />
<pre><code class="javascript hljs"><span class="hljs-keyword">var</span> times = <span class="hljs-number">65535</span>;
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">initializer</span>(<span class="hljs-params">val, z</span>) </span>{
<span class="hljs-keyword">const</span> i = z % <span class="hljs-number">5</span> | <span class="hljs-number">0</span>;
<span class="hljs-keyword">return</span> <span class="hljs-number">0</span> == (z % <span class="hljs-number">3</span> | <span class="hljs-number">0</span>) ? <span class="hljs-number">0</span> === i ? <span class="hljs-string">"fizzbuzz"</span> : <span class="hljs-string">"fizz"</span> : <span class="hljs-number">0</span> === i ? <span class="hljs-string">"buzz"</span> : z;
}
<span class="hljs-comment">// for i</span>
<span class="hljs-keyword">var</span> b = <span class="hljs-keyword">new</span> <span class="hljs-built_in">Array</span>(times);
<span class="hljs-keyword">for</span> (<span class="hljs-keyword">var</span> i = <span class="hljs-number">0</span>; i &lt; times; i++) {
b[i] = initializer(b[i], i)
}
b
<span class="hljs-comment">// for push</span>
<span class="hljs-keyword">var</span> c = [];
<span class="hljs-keyword">for</span> (<span class="hljs-keyword">var</span> i = <span class="hljs-number">0</span>; i &lt; times; i++) {
c.push(initializer(c[i], i))
}
c
<span class="hljs-comment">// Fill Map</span>
<span class="hljs-keyword">new</span> <span class="hljs-built_in">Array</span>(times).fill().map(initializer)
</code></pre><br />
Это не самый красивый fizzbuzz, но это мой fizzbuzz. <a href="https://www.measurethat.net/Benchmarks/Show/22086/0/array-initialization-for-for-push-fill-map">Линк на бенч</a>.<br />
<br />
<div style="text-align:center;"></div><br />
Вариант с <code>fill map</code> создаёт два массива, сначала при вызове конструктора, потом при вызове map. Но такой вариант безальтернативно быстрее на хроме.<br />
<br />
<h2>
<font color="#3AC1EF">Конкатенация массивов</font>
</h2><br />
<div style="text-align:center;"></div><br />
<pre><code class="javascript hljs"><span class="hljs-comment">// reduce</span>
arr.reduce(<span class="hljs-function">(<span class="hljs-params">acc, val</span>) =&gt;</span> acc.concat(val), [])
<span class="hljs-comment">// flatMap</span>
arr.flatMap(<span class="hljs-function"><span class="hljs-params">x</span> =&gt;</span> x)
<span class="hljs-comment">// flat</span>
arr.flat()
<span class="hljs-comment">// reduce push</span>
arr.reduce(<span class="hljs-function">(<span class="hljs-params">acc, val</span>) =&gt;</span> {
<span class="hljs-keyword">if</span> (val) val.forEach(<span class="hljs-function"><span class="hljs-params">a</span> =&gt;</span> acc.push(a));
<span class="hljs-keyword">return</span> acc;
}, [])
<span class="hljs-comment">// forEach push</span>
<span class="hljs-keyword">let</span> acc = [];
arr.forEach(<span class="hljs-function"><span class="hljs-params">val</span> =&gt;</span> {
val &amp;&amp; val.forEach(<span class="hljs-function"><span class="hljs-params">v</span> =&gt;</span> acc.push(v));
}), acc;
<span class="hljs-comment">//concat spread</span>
[].concat(...arr)
</code></pre><br />
Конкатенация массивов на 1 уровень, поведение идентичное <code>flat(1)</code>. <a href="https://www.measurethat.net/Benchmarks/Show/22085/0/flat-vs-flatmap-vs-reduce-vs-reduce-push-vs-foreach-pus">Линк</a>.<br />
<br />
<div style="text-align:center;"></div><br />
Иногда я не понимаю, почему разработчики движков оставили такой потенциал для оптимизации.<br />
<br />
<h2>
<font color="#3AC1EF">Уничтожение хрома</font>
</h2><br />
Бенчмарки ниже я перепроверял по нескольку раз, результат одинаковый и верный. Лиса действительно такая быстрая.<br />
<br />
<h3>
<font color="#3AC1EF">▍ Итерация по массиву</font>
</h3><br />
Сравнивать будем <code>Array.prototype.forEach vs for...of vs for</code>. На код смотрите <a href="https://www.measurethat.net/Benchmarks/Show/22095/0/side-effect-for-i-vs-for-of-vs-foreach-fix">по линку</a>.<br />
<br />
<div style="text-align:center;"></div><br />
Ради производительности, циклы <code>for</code>, лучше переделать в <code>forEach</code>, чтобы хром не отставал.<br />
<br />
<h3>
<font color="#3AC1EF">▍ Содержит ли строка значение</font>
</h3><br />
<pre><code class="javascript hljs"><span class="hljs-comment">// text.includes()</span>
url.includes(<span class="hljs-string">'matchthis'</span>)
<span class="hljs-comment">// text.test()</span>
/matchthis/.test(url)
<span class="hljs-comment">// text.match()</span>
url.match(<span class="hljs-regexp">/matchthis/</span>).length &gt;= <span class="hljs-number">0</span>
<span class="hljs-comment">// text.indexOf()</span>
url.indexOf(<span class="hljs-string">'matchthis'</span>) &gt;= <span class="hljs-number">0</span>
<span class="hljs-comment">// text.search()</span>
url.search(<span class="hljs-string">'matchthis'</span>) &gt;= <span class="hljs-number">0</span>
</code></pre><br />
<br />
<div style="text-align:center;"></div><br />
Трюк с <code>IndexOf</code> быстрее и на лисе, и на хроме. Используйте трюк с <code>IndexOf</code>. <a href="https://www.measurethat.net/Benchmarks/Show/22090/0/includes-vs-test-vs-match-vs-indexof-vs-search-fix">Линк на бенчмарк</a>.<br />
<br />
<h2>
<font color="#3AC1EF">Преобразование строки в число</font>
</h2><br />
Тестируем неявное преобразование, парсинг и вызов конструктора.<br />
<br />
<pre><code class="javascript hljs"><span class="hljs-comment">// implicit</span>
<span class="hljs-keyword">var</span> imp = + strNum
<span class="hljs-comment">// parseFloat</span>
<span class="hljs-keyword">var</span> toStr = <span class="hljs-built_in">parseFloat</span>(strNum)
<span class="hljs-comment">//Number</span>
<span class="hljs-keyword">var</span> num = <span class="hljs-built_in">Number</span>(strNum)
</code></pre><br />
<h3>
<font color="#3AC1EF">▍ Int</font>
</h3><br />
<br />
<div style="text-align:center;"></div><br />
<a href="https://www.measurethat.net/Benchmarks/Show/21897/0/implicit-vs-parseint-vs-number-string-to-num">Линк на бенч</a>.<br />
<br />
<h3>
<font color="#3AC1EF">▍ Float</font>
</h3><br />
<br />
<div style="text-align:center;"></div><br />
Я перепроверял, это не ошибка. Неявный каст стринги в инт практически бесплатный у лисы. <a href="https://www.measurethat.net/Benchmarks/Show/22092/0/implicit-vs-parsefloat-vs-number-string-to-num">Линк на бенч</a>.<br />
<br />
<h2>
<font color="#3AC1EF">Выводы</font>
</h2><br />
<ol>
<li>Лисичка похорошела.
</li>
<li>JS сделан за неделю на коленке.
</li>
<li>Я не пишу на JS.
</li>
<li>Вы тоже прекращайте.
</li>
</ol><br />
<blockquote>
<b><a href="https://t.me/ruvds_community/130"><font color="#3AC1EF">Играй в нашу новую игру прямо в Telegram!</font></a></b>
</blockquote><a href="http://ruvds.com/ru-rub?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=programmerguru&amp;utm_content=js_tryuki_nablyudeniya_benchmarki_i_kak_lisa_unichtozhaet_xrom_ya_protestiroval_vsyo_chto_vam_bylo_len"><img src="https://habrastorage.org/r/w1560/webt/sz/7j/pf/sz7jpfj8i1pa6ocj-eia09dev4q.png" data-src="https://habrastorage.org/webt/sz/7j/pf/sz7jpfj8i1pa6ocj-eia09dev4q.png" /></a>
</div>
</div>
</div>
<div class="v-portal" style="display: none;"></div>
<div class="v-portal" style="display: none;"></div>
</div>
<div aria-hidden="true" role="dialog" tabindex="-1" class="pswp">
<div class="pswp__bg"></div>
<div class="pswp__scroll-wrap">
<div class="pswp__container">
<div class="pswp__item"></div>
<div class="pswp__item"></div>
<div class="pswp__item"></div>
</div>
<div class="pswp__ui pswp__ui--hidden">
<div class="pswp__top-bar">
<span class="tm-svg-icon__wrapper pswp__button pswp__button--close"><svg height="16" width="16" class="tm-svg-img tm-svg-icon">
<title>
Закрыть
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#close"></use></svg></span>
<div class="pswp__preloader">
<div class="pswp__preloader__icn">
<div class="pswp__preloader__cut">
<div class="pswp__preloader__donut"></div>
</div>
</div>
</div>
</div><button class="pswp__button pswp__button--arrow--left"><svg viewbox="0 0 24 24" class="pswp__button-icon">
<path fill-rule="evenodd" clip-rule="evenodd" d="M15.707 4.293a1 1 0 010 1.414L9.414 12l6.293 6.293a1 1 0 01-1.414 1.414l-7-7a1 1 0 010-1.414l7-7a1 1 0 011.414 0z"></path></svg></button> <button class="pswp__button pswp__button--arrow--right"><svg viewbox="0 0 24 24" class="pswp__button-icon">
<path fill-rule="evenodd" clip-rule="evenodd" d="M15.707 4.293a1 1 0 010 1.414L9.414 12l6.293 6.293a1 1 0 01-1.414 1.414l-7-7a1 1 0 010-1.414l7-7a1 1 0 011.414 0z"></path></svg></button>
</div>
</div>
</div><!---->
</div><!---->
<div class="tm-article-presenter__meta">
<div class="tm-separated-list tm-article-presenter__meta-list">
<span class="tm-separated-list__title">Теги:</span>
<ul class="tm-separated-list__list">
<li class="tm-separated-list__item">
<a href="/ru/search/?target_type=posts&amp;order=relevance&amp;q=%5Bjavascript%5D" class="tm-tags-list__link">javascript</a>
</li>
<li class="tm-separated-list__item">
<a href="/ru/search/?target_type=posts&amp;order=relevance&amp;q=%5Bgoogle%20chrome%5D" class="tm-tags-list__link">google chrome</a>
</li>
<li class="tm-separated-list__item">
<a href="/ru/search/?target_type=posts&amp;order=relevance&amp;q=%5Bmozilla%20firefox%5D" class="tm-tags-list__link">mozilla firefox</a>
</li>
<li class="tm-separated-list__item">
<a href="/ru/search/?target_type=posts&amp;order=relevance&amp;q=%5B%D0%B1%D1%80%D0%B0%D1%83%D0%B7%D0%B5%D1%80%D1%8B%5D" class="tm-tags-list__link">браузеры</a>
</li>
<li class="tm-separated-list__item">
<a href="/ru/search/?target_type=posts&amp;order=relevance&amp;q=%5B%D0%B2%D1%8B%D1%81%D0%BE%D0%BA%D0%B0%D1%8F%20%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%B4%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D1%8C%5D" class="tm-tags-list__link">высокая производительность</a>
</li>
<li class="tm-separated-list__item">
<a href="/ru/search/?target_type=posts&amp;order=relevance&amp;q=%5B%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F%5D" class="tm-tags-list__link">оптимизация</a>
</li>
<li class="tm-separated-list__item">
<a href="/ru/search/?target_type=posts&amp;order=relevance&amp;q=%5Bruvds_%D1%81%D1%82%D0%B0%D1%82%D1%8C%D0%B8%5D" class="tm-tags-list__link">ruvds_статьи</a>
</li>
</ul>
</div>
<div class="tm-separated-list tm-article-presenter__meta-list">
<span class="tm-separated-list__title">Хабы:</span>
<ul class="tm-separated-list__list">
<li class="tm-separated-list__item">
<a href="/ru/company/ruvds/blog/" class="tm-hubs-list__link router-link-active">Блог компании RUVDS.com</a>
</li>
<li class="tm-separated-list__item">
<a href="/ru/hub/hi/" class="tm-hubs-list__link">Высокая производительность</a>
</li>
<li class="tm-separated-list__item">
<a href="/ru/hub/javascript/" class="tm-hubs-list__link">JavaScript</a>
</li>
<li class="tm-separated-list__item">
<a href="/ru/hub/client_side_optimization/" class="tm-hubs-list__link">Клиентская оптимизация</a>
</li>
<li class="tm-separated-list__item">
<a href="/ru/hub/browsers/" class="tm-hubs-list__link">Браузеры</a>
</li>
</ul>
</div>
</div>
</article>
</div><!---->
</div>
<div class="tm-article-sticky-panel transition-slide-enter-active transition-slide-enter-to">
<div class="tm-data-icons tm-article-sticky-panel__icons">
<div class="tm-article-rating tm-data-icons__item">
<div class="tm-votes-meter tm-article-rating__votes-switcher">
<svg height="24" width="24" class="tm-svg-img tm-votes-meter__icon tm-votes-meter__icon tm-votes-meter__icon_appearance-article">
<title>
Всего голосов 132: ↑116 и ↓16
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#counter-rating"></use></svg> <span title="Всего голосов 132: ↑116 и ↓16" class="tm-votes-meter__value tm-votes-meter__value tm-votes-meter__value_positive tm-votes-meter__value_appearance-article tm-votes-meter__value_rating">+100</span>
</div>
<div class="v-portal" style="display:none;"></div>
</div><!----><!----><button title="Добавить в закладки" type="button" class="bookmarks-button tm-data-icons__item"><span title="Добавить в закладки" class="tm-svg-icon__wrapper bookmarks-button__icon"><svg height="24" width="24" class="tm-svg-img tm-svg-icon">
<title>
Добавить в закладки
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#counter-favorite"></use></svg></span> <span title="Количество пользователей, добавивших публикацию в закладки" class="bookmarks-button__counter">89</span></button>
<div title="Читать комментарии" class="tm-article-comments-counter-link tm-data-icons__item">
<a href="/ru/company/ruvds/blog/712386/comments/" class="tm-article-comments-counter-link__link"><svg height="24" width="24" class="tm-svg-img tm-article-comments-counter-link__icon">
<title>
Комментарии
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#counter-comments"></use></svg> <span class="tm-article-comments-counter-link__value">77</span></a> <a href="/ru/company/ruvds/blog/712386/comments/" class="tm-article-comments-counter-link__link"><span title="Читать новые комментарии" class="tm-article-comments-counter-link__unread-counter">+77</span></a>
</div>
<div title="Поделиться" class="tm-sharing tm-data-icons__item">
<button type="button" class="tm-sharing__button"><svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" class="tm-sharing__icon">
<path fill="currentColor" d="M13.8 13.8V18l7.2-6.6L13.8 5v3.9C5 8.9 3 18.6 3 18.6c2.5-4.4 6-4.8 10.8-4.8z"></path></svg></button>
<div class="v-portal" style="display:none;"></div>
</div>
<div class="v-portal" style="display:none;"></div>
</div>
</div>
</div>
<div class="v-portal" style="display:none;"></div>
<div class="tm-article-presenter__footer">
<div class="tm-article-blocks">
<div class="tm-editoral-subscription">
<span class="tm-svg-icon__wrapper tm-editoral-subscription__close"><svg height="16" width="16" class="tm-svg-img tm-svg-icon">
<title>
Закрыть
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#close"></use></svg></span>
<h3 class="tm-editoral-subscription__title">
Редакторский дайджест
</h3>
<p class="tm-editoral-subscription__description">
Присылаем лучшие статьи раз&#160;в&#160;месяц
</p>
<form method="get" class="tm-editoral-subscription__form">
<div class="tm-input-text-decorated tm-editoral-subscription__input tm-input-text-decorated_has-label-after" name="email" placeholder="Электропочта" type="email">
<!----><input name="email" placeholder="Электропочта" type="email" class="tm-input-text-decorated__input" />
<div class="tm-input-text-decorated__label tm-input-text-decorated__label_after">
<button type="submit" class="tm-editoral-subscription__icon"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
<path fill="currentColor" clip-rule="evenodd" d="M19.707 11.293a1 1 0 010 1.414l-5.5 5.5a1 1 0 01-1.414-1.414L16.586 13H5a1 1 0 110-2h11.586l-3.793-3.793a1 1 0 011.414-1.414l5.5 5.5z"></path></svg></button>
</div>
</div><!---->
</form>
</div>
<section class="tm-block tm-block tm-block_spacing-bottom">
<!---->
<div class="tm-block__body tm-block__body tm-block__body_variant-balanced">
<div class="tm-article-author">
<div class="tm-article-author__company">
<div class="tm-article-author__company-card">
<div class="tm-company-snippet">
<a href="/ru/company/ruvds/profile/" class="tm-company-snippet__logo-link">
<div class="tm-entity-image">
<img alt="" height="40" src="//habrastorage.org/getpro/habr/company/027/b19/cea/027b19cea984722a8d806edcc56c2c00.png" width="40" class="tm-entity-image__pic" />
</div></a>
<div class="tm-company-snippet__info">
<a href="/ru/company/ruvds/profile/" class="tm-company-snippet__title">RUVDS.com</a>
<div class="tm-company-snippet__description">
VDS/VPS-хостинг. Скидка 10% по коду <b>HABR10</b>
</div>
</div>
</div>
<div class="tm-article-author__buttons">
<!----><!---->
</div>
</div>
<div class="tm-article-author__company-contacts">
<a href="https://telegram.me/ruvds_community" rel="noopener" target="_blank" class="tm-article-author__contact">Telegram</a> <a href="https://vk.com/ru_vds" rel="noopener" target="_blank" class="tm-article-author__contact">ВКонтакте</a> <a href="https://twitter.com/ru_vds" rel="noopener" target="_blank" class="tm-article-author__contact">Twitter</a>
</div>
<div class="tm-article-author__separator"></div>
</div>
<div class="tm-user-card tm-article-author__user-card tm-user-card tm-user-card_variant-article">
<div class="tm-user-card__info-container">
<div class="tm-user-card__header">
<div class="tm-user-card__header-data">
<a href="/ru/users/programmerguru/" class="tm-user-card__userpic tm-user-card__userpic_size-40">
<div class="tm-entity-image">
<img alt="" src="//habrastorage.org/getpro/habr/avatars/840/b65/91d/840b6591d105ef0aedde365a3b4ec765.png" class="tm-entity-image__pic" />
</div></a>
<div class="tm-user-card__meta">
<div title=" 75 голосов " class="tm-karma tm-user-card__karma tm-karma">
<div class="tm-karma__votes tm-karma__votes_positive">
51
</div>
<div class="tm-karma__text">
Карма
</div>
<div class="v-portal" style="display:none;"></div>
</div>
<div title="Рейтинг пользователя" class="tm-rating tm-user-card__rating">
<div class="tm-rating__header">
<div class="tm-rating__counter tm-rating__counter">
96.1
</div>
</div>
<div class="tm-rating__text tm-rating__text">
Рейтинг
</div>
</div>
</div>
</div>
</div>
<div class="tm-user-card__info tm-user-card__info tm-user-card__info_variant-article">
<div class="tm-user-card__title tm-user-card__title tm-user-card__title_variant-article">
<!----> <a href="/ru/users/programmerguru/" class="tm-user-card__nickname tm-user-card__nickname tm-user-card__nickname_variant-article">@programmerguru</a> <!---->
</div>
<p class="tm-user-card__short-info tm-user-card__short-info tm-user-card__short-info_variant-article">
Пользователь
</p>
</div>
</div>
<div class="tm-user-card__buttons tm-user-card__buttons tm-user-card__buttons_variant-article">
<!----><!----><!----><!----><!---->
</div>
</div><!---->
</div>
<div class="v-portal" style="display:none;"></div>
</div><!---->
</section>
<div class="tm-article-blocks__comments">
<div class="tm-article-page-comments">
<div class="tm-article-comments-client-rendered">
<div class="tm-article-comments">
<div class="tm-comments-wrapper">
<div class="tm-comments-wrapper__wrapper">
<header class="tm-comments-wrapper__header">
<h2 class="tm-comments-wrapper__title">
Комментарии <span class="tm-comments-wrapper__comments-count">77</span>
</h2>
<div class="tm-comments-wrapper__header-aside">
<!----><button class="tm-rss-button tm-rss-button_comments-header"><span class="tm-svg-icon__wrapper tm-rss-button__icon"><svg height="16" width="16" class="tm-svg-img tm-svg-icon">
<title>
Скопировать ссылку на RSS
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#rss"></use></svg></span></button> <!---->
</div>
</header>
<div class="tm-comments-wrapper__inner">
<div>
<!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!---->
<div class="tm-placeholder tm-placeholder__comment tm-placeholder__comment_">
<!---->
<div class="tm-placeholder__user">
<div class="tm-placeholder__user-pic loads"></div>
<div class="tm-placeholder__user-date loads"></div>
<div class="tm-placeholder__user-score loads"></div>
</div>
<div class="tm-placeholder__article-title loads" style="width: 81%;"></div>
<div class="tm-placeholder__article-title loads" style="width: 84%;"></div>
</div>
<div class="tm-placeholder tm-placeholder__comment tm-placeholder__comment_">
<!---->
<div class="tm-placeholder__user">
<div class="tm-placeholder__user-pic loads"></div>
<div class="tm-placeholder__user-date loads"></div>
<div class="tm-placeholder__user-score loads"></div>
</div>
<div class="tm-placeholder__article-title loads" style="width: 94%;"></div>
<div class="tm-placeholder__article-title loads" style="width: 90%;"></div>
</div>
<div class="tm-placeholder tm-placeholder__comment tm-placeholder__comment_">
<!---->
<div class="tm-placeholder__user">
<div class="tm-placeholder__user-pic loads"></div>
<div class="tm-placeholder__user-date loads"></div>
<div class="tm-placeholder__user-score loads"></div>
</div>
<div class="tm-placeholder__article-title loads" style="width: 97%;"></div>
<div class="tm-placeholder__article-title loads" style="width: 89%;"></div>
</div><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!---->
</div>
<div class="v-portal" style="display: none;"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<section class="tm-block tm-block tm-block_spacing-bottom">
<header class="tm-block__header tm-block__header tm-block__header_variant-borderless">
<div class="tm-block__header-container">
<h2 class="tm-block__title tm-block__title tm-block__title_variant-large">
Публикации
</h2>
</div><!---->
</header>
<div class="tm-block__body tm-block__body tm-block__body_variant-condensed-slim">
<div class="tm-tabs tm-tabs">
<div class="">
<span class="tm-tabs__tab-item"><button class="tm-tabs__tab-link tm-tabs__tab-link tm-tabs__tab-link_active tm-tabs__tab-link_slim">Лучшие за сутки</button></span> <span class="tm-tabs__tab-item"><button class="tm-tabs__tab-link tm-tabs__tab-link tm-tabs__tab-link_slim">Похожие</button></span>
</div><!---->
</div>
<div class="similar-and-daily__tab-view">
<div class="daily-articles-list">
<ul class="tm-article-card-list">
<li class="tm-article-card-list__item">
<div class="tm-article-snippet tm-article-snippet tm-article-snippet_noBorder">
<div class="tm-article-snippet__meta-container">
<div class="tm-article-snippet__meta">
<span class="tm-user-info tm-article-snippet__author"><a href="/ru/users/DAN_SEA/" class="tm-user-info__userpic" title="DAN_SEA">
<div class="tm-entity-image">
<span class="tm-user-info tm-article-snippet__author"><svg height="24" width="24" class="tm-svg-img tm-image-placeholder tm-image-placeholder_green"><!---->
<use xlink:href="/img/megazord-v28.78dd0d98..svg#placeholder-user"></use></svg></span>
</div></a> <span class="tm-user-info__user"><a href="/ru/users/DAN_SEA/" class="tm-user-info__username">DAN_SEA <!----></a> <span class="tm-article-snippet__datetime-published"><time datetime="2023-02-09T09:00:01.000Z" title="2023-02-09, 17:00">вчера в 17:00</time></span></span></span>
</div><!---->
</div>
<h2 lang="ru" class="tm-article-snippet__title tm-article-snippet__title_h2" xml:lang="ru">
<a href="/ru/company/ruvds/blog/714946/" class="tm-article-snippet__title-link" data-article-link=""><span>Жидкий микрофон, или «в этом доме тебя слушают даже стены»</span></a>
</h2>
<div class="tm-article-snippet__stats">
<div class="tm-article-complexity tm-article-complexity_complexity-low">
<span class="tm-svg-icon__wrapper tm-article-complexity__icon"><svg height="24" width="24" class="tm-svg-img tm-svg-icon">
<title>
Простой
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#complexity-low"></use></svg></span> <span class="tm-article-complexity__label">Простой</span>
</div>
<div class="tm-article-reading-time">
<span class="tm-svg-icon__wrapper tm-article-reading-time__icon"><svg height="24" width="24" class="tm-svg-img tm-svg-icon">
<title>
Время прочтения
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#clock"></use></svg></span> <span class="tm-article-reading-time__label">10 мин</span>
</div><span class="tm-icon-counter tm-data-icons__item" title="Количество просмотров"><svg height="24" width="24" class="tm-svg-img tm-icon-counter__icon">
<title>
Просмотры
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#counter-views"></use></svg> <span class="tm-icon-counter__value">14K</span></span>
</div><!----><!----><!----><!---->
</div>
<div class="tm-data-icons">
<!---->
<div class="tm-votes-meter tm-data-icons__item">
<svg height="24" width="24" class="tm-svg-img tm-votes-meter__icon tm-votes-meter__icon tm-votes-meter__icon_appearance-article">
<title>
Всего голосов 51: ↑46 и ↓5
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#counter-rating"></use></svg> <span title="Всего голосов 51: ↑46 и ↓5" class="tm-votes-meter__value tm-votes-meter__value tm-votes-meter__value_positive tm-votes-meter__value_appearance-article tm-votes-meter__value_rating">+41</span>
</div><!----><button title="Добавить в закладки" type="button" class="bookmarks-button tm-data-icons__item"><span title="Добавить в закладки" class="tm-svg-icon__wrapper bookmarks-button__icon"><svg height="24" width="24" class="tm-svg-img tm-svg-icon">
<title>
Добавить в закладки
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#counter-favorite"></use></svg></span> <span title="Количество пользователей, добавивших публикацию в закладки" class="bookmarks-button__counter">54</span></button>
<div class="tm-article-comments-counter-link tm-data-icons__item" title="Читать комментарии">
<a href="/ru/company/ruvds/blog/714946/comments/" class="tm-article-comments-counter-link__link"><svg height="24" width="24" class="tm-svg-img tm-article-comments-counter-link__icon">
<title>
Комментарии
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#counter-comments"></use></svg> <span class="tm-article-comments-counter-link__value">68</span></a> <a href="/ru/company/ruvds/blog/714946/comments/" class="tm-article-comments-counter-link__link"><span title="Читать новые комментарии" class="tm-article-comments-counter-link__unread-counter">+68</span></a>
</div><!---->
<div class="v-portal" style="display: none;"></div>
</div>
</li>
<li class="tm-article-card-list__item">
<div class="tm-article-snippet tm-article-snippet tm-article-snippet_noBorder">
<div class="tm-article-snippet__meta-container">
<div class="tm-article-snippet__meta">
<span class="tm-user-info tm-article-snippet__author"><a href="/ru/users/klauss_z/" class="tm-user-info__userpic" title="klauss_z">
<div class="tm-entity-image">
<span class="tm-user-info tm-article-snippet__author"><img alt="" height="24" src="//habrastorage.org/r/w32/getpro/habr/avatars/d46/1c1/aae/d461c1aaefe7e5eb4c6742405b2d4a8a.png" width="24" class="tm-entity-image__pic" /></span>
</div></a> <span class="tm-user-info__user"><a href="/ru/users/klauss_z/" class="tm-user-info__username">klauss_z <!----></a> <span class="tm-article-snippet__datetime-published"><time datetime="2023-02-09T16:14:17.000Z" title="2023-02-10, 00:14">16 часов назад</time></span></span></span>
</div><!---->
</div>
<h2 lang="ru" class="tm-article-snippet__title tm-article-snippet__title_h2" xml:lang="ru">
<a href="/ru/post/715950/" class="tm-article-snippet__title-link" data-article-link=""><span>Как я начал учить Python и ничего не произошло</span></a>
</h2>
<div class="tm-article-snippet__stats">
<div class="tm-article-complexity tm-article-complexity_complexity-low">
<span class="tm-svg-icon__wrapper tm-article-complexity__icon"><svg height="24" width="24" class="tm-svg-img tm-svg-icon">
<title>
Простой
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#complexity-low"></use></svg></span> <span class="tm-article-complexity__label">Простой</span>
</div>
<div class="tm-article-reading-time">
<span class="tm-svg-icon__wrapper tm-article-reading-time__icon"><svg height="24" width="24" class="tm-svg-img tm-svg-icon">
<title>
Время прочтения
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#clock"></use></svg></span> <span class="tm-article-reading-time__label">6 мин</span>
</div><span class="tm-icon-counter tm-data-icons__item" title="Количество просмотров"><svg height="24" width="24" class="tm-svg-img tm-icon-counter__icon">
<title>
Просмотры
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#counter-views"></use></svg> <span class="tm-icon-counter__value">12K</span></span>
</div><!---->
<div class="tm-article-snippet__labels-container">
<div class="tm-article-snippet__labels">
<div class="tm-article-snippet__label tm-article-snippet__label_variant-opinion">
<span>Мнение</span>
</div>
</div>
</div><!----><!---->
</div>
<div class="tm-data-icons">
<!---->
<div class="tm-votes-meter tm-data-icons__item">
<svg height="24" width="24" class="tm-svg-img tm-votes-meter__icon tm-votes-meter__icon tm-votes-meter__icon_appearance-article">
<title>
Всего голосов 41: ↑37 и ↓4
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#counter-rating"></use></svg> <span title="Всего голосов 41: ↑37 и ↓4" class="tm-votes-meter__value tm-votes-meter__value tm-votes-meter__value_positive tm-votes-meter__value_appearance-article tm-votes-meter__value_rating">+33</span>
</div><!----><button title="Добавить в закладки" type="button" class="bookmarks-button tm-data-icons__item"><span title="Добавить в закладки" class="tm-svg-icon__wrapper bookmarks-button__icon"><svg height="24" width="24" class="tm-svg-img tm-svg-icon">
<title>
Добавить в закладки
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#counter-favorite"></use></svg></span> <span title="Количество пользователей, добавивших публикацию в закладки" class="bookmarks-button__counter">37</span></button>
<div class="tm-article-comments-counter-link tm-data-icons__item" title="Читать комментарии">
<a href="/ru/post/715950/comments/" class="tm-article-comments-counter-link__link"><svg height="24" width="24" class="tm-svg-img tm-article-comments-counter-link__icon">
<title>
Комментарии
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#counter-comments"></use></svg> <span class="tm-article-comments-counter-link__value">43</span></a> <a href="/ru/post/715950/comments/" class="tm-article-comments-counter-link__link"><span title="Читать новые комментарии" class="tm-article-comments-counter-link__unread-counter">+43</span></a>
</div><!---->
<div class="v-portal" style="display: none;"></div>
</div>
</li>
<li class="tm-article-card-list__item">
<div class="tm-article-snippet tm-article-snippet tm-article-snippet_noBorder">
<div class="tm-article-snippet__meta-container">
<div class="tm-article-snippet__meta">
<span class="tm-user-info tm-article-snippet__author"><a href="/ru/users/OlegSivchenko/" class="tm-user-info__userpic" title="OlegSivchenko">
<div class="tm-entity-image">
<span class="tm-user-info tm-article-snippet__author"><img alt="" height="24" src="//habrastorage.org/r/w32/getpro/habr/avatars/34a/b85/90f/34ab8590fc34309be944c1d9daf70d94.jpg" width="24" class="tm-entity-image__pic" /></span>
</div></a> <span class="tm-user-info__user"><a href="/ru/users/OlegSivchenko/" class="tm-user-info__username">OlegSivchenko <!----></a> <span class="tm-article-snippet__datetime-published"><time datetime="2023-02-09T11:54:11.000Z" title="2023-02-09, 19:54">21 час назад</time></span></span></span>
</div><!---->
</div>
<h2 lang="ru" class="tm-article-snippet__title tm-article-snippet__title_h2" xml:lang="ru">
<a href="/ru/post/715872/" class="tm-article-snippet__title-link" data-article-link=""><span>Заря квазаров</span></a>
</h2>
<div class="tm-article-snippet__stats">
<!---->
<div class="tm-article-reading-time">
<span class="tm-svg-icon__wrapper tm-article-reading-time__icon"><svg height="24" width="24" class="tm-svg-img tm-svg-icon">
<title>
Время прочтения
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#clock"></use></svg></span> <span class="tm-article-reading-time__label">8 мин</span>
</div><span class="tm-icon-counter tm-data-icons__item" title="Количество просмотров"><svg height="24" width="24" class="tm-svg-img tm-icon-counter__icon">
<title>
Просмотры
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#counter-views"></use></svg> <span class="tm-icon-counter__value">2.4K</span></span>
</div><!----><!----><!----><!---->
</div>
<div class="tm-data-icons">
<!---->
<div class="tm-votes-meter tm-data-icons__item">
<svg height="24" width="24" class="tm-svg-img tm-votes-meter__icon tm-votes-meter__icon tm-votes-meter__icon_appearance-article">
<title>
Всего голосов 35: ↑33 и ↓2
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#counter-rating"></use></svg> <span title="Всего голосов 35: ↑33 и ↓2" class="tm-votes-meter__value tm-votes-meter__value tm-votes-meter__value_positive tm-votes-meter__value_appearance-article tm-votes-meter__value_rating">+31</span>
</div><!----><button title="Добавить в закладки" type="button" class="bookmarks-button tm-data-icons__item"><span title="Добавить в закладки" class="tm-svg-icon__wrapper bookmarks-button__icon"><svg height="24" width="24" class="tm-svg-img tm-svg-icon">
<title>
Добавить в закладки
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#counter-favorite"></use></svg></span> <span title="Количество пользователей, добавивших публикацию в закладки" class="bookmarks-button__counter">14</span></button>
<div class="tm-article-comments-counter-link tm-data-icons__item" title="Читать комментарии">
<a href="/ru/post/715872/comments/" class="tm-article-comments-counter-link__link"><svg height="24" width="24" class="tm-svg-img tm-article-comments-counter-link__icon">
<title>
Комментарии
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#counter-comments"></use></svg> <span class="tm-article-comments-counter-link__value">10</span></a> <a href="/ru/post/715872/comments/" class="tm-article-comments-counter-link__link"><span title="Читать новые комментарии" class="tm-article-comments-counter-link__unread-counter">+10</span></a>
</div><!---->
<div class="v-portal" style="display: none;"></div>
</div>
</li>
<li class="tm-article-card-list__item">
<div class="tm-article-snippet tm-article-snippet tm-article-snippet_noBorder">
<div class="tm-article-snippet__meta-container">
<div class="tm-article-snippet__meta">
<span class="tm-user-info tm-article-snippet__author"><a href="/ru/users/tatdudo/" class="tm-user-info__userpic" title="tatdudo">
<div class="tm-entity-image">
<span class="tm-user-info tm-article-snippet__author"><img alt="" height="24" src="//habrastorage.org/r/w32/getpro/habr/avatars/0ce/649/2c6/0ce6492c660164b60aca1e8152c13633.jpg" width="24" class="tm-entity-image__pic" /></span>
</div></a> <span class="tm-user-info__user"><a href="/ru/users/tatdudo/" class="tm-user-info__username">tatdudo <!----></a> <span class="tm-article-snippet__datetime-published"><time datetime="2023-02-09T12:43:59.000Z" title="2023-02-09, 20:43">20 часов назад</time></span></span></span>
</div><!---->
</div>
<h2 lang="ru" class="tm-article-snippet__title tm-article-snippet__title_h2" xml:lang="ru">
<a href="/ru/company/selectel/blog/712756/" class="tm-article-snippet__title-link" data-article-link=""><span>Как создать внутреннюю базу знаний для большой IT-компании. Из хаоса в гиперспейсы</span></a>
</h2>
<div class="tm-article-snippet__stats">
<div class="tm-article-complexity tm-article-complexity_complexity-medium">
<span class="tm-svg-icon__wrapper tm-article-complexity__icon"><svg height="24" width="24" class="tm-svg-img tm-svg-icon">
<title>
Средний
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#complexity-medium"></use></svg></span> <span class="tm-article-complexity__label">Средний</span>
</div>
<div class="tm-article-reading-time">
<span class="tm-svg-icon__wrapper tm-article-reading-time__icon"><svg height="24" width="24" class="tm-svg-img tm-svg-icon">
<title>
Время прочтения
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#clock"></use></svg></span> <span class="tm-article-reading-time__label">7 мин</span>
</div><span class="tm-icon-counter tm-data-icons__item" title="Количество просмотров"><svg height="24" width="24" class="tm-svg-img tm-icon-counter__icon">
<title>
Просмотры
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#counter-views"></use></svg> <span class="tm-icon-counter__value">2.8K</span></span>
</div><!---->
<div class="tm-article-snippet__labels-container">
<div class="tm-article-snippet__labels">
<div class="tm-article-snippet__label tm-article-snippet__label_variant-case">
<span>Кейс</span>
</div>
</div>
</div><!----><!---->
</div>
<div class="tm-data-icons">
<!---->
<div class="tm-votes-meter tm-data-icons__item">
<svg height="24" width="24" class="tm-svg-img tm-votes-meter__icon tm-votes-meter__icon tm-votes-meter__icon_appearance-article">
<title>
Всего голосов 28: ↑28 и ↓0
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#counter-rating"></use></svg> <span title="Всего голосов 28: ↑28 и ↓0" class="tm-votes-meter__value tm-votes-meter__value tm-votes-meter__value_positive tm-votes-meter__value_appearance-article tm-votes-meter__value_rating">+28</span>
</div><!----><button title="Добавить в закладки" type="button" class="bookmarks-button tm-data-icons__item"><span title="Добавить в закладки" class="tm-svg-icon__wrapper bookmarks-button__icon"><svg height="24" width="24" class="tm-svg-img tm-svg-icon">
<title>
Добавить в закладки
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#counter-favorite"></use></svg></span> <span title="Количество пользователей, добавивших публикацию в закладки" class="bookmarks-button__counter">28</span></button>
<div class="tm-article-comments-counter-link tm-data-icons__item" title="Читать комментарии">
<a href="/ru/company/selectel/blog/712756/comments/" class="tm-article-comments-counter-link__link"><svg height="24" width="24" class="tm-svg-img tm-article-comments-counter-link__icon">
<title>
Комментарии
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#counter-comments"></use></svg> <span class="tm-article-comments-counter-link__value">0</span></a> <!---->
</div><!---->
<div class="v-portal" style="display: none;"></div>
</div>
</li>
<li class="tm-article-card-list__item">
<div class="tm-article-snippet tm-article-snippet tm-article-snippet_noBorder">
<div class="tm-article-snippet__meta-container">
<div class="tm-article-snippet__meta">
<span class="tm-user-info tm-article-snippet__author"><a href="/ru/users/seasadm/" class="tm-user-info__userpic" title="seasadm">
<div class="tm-entity-image">
<span class="tm-user-info tm-article-snippet__author"><img alt="" height="24" src="//habrastorage.org/r/w32/getpro/habr/avatars/7c2/562/273/7c2562273fd2fc843de875de511f2c63.png" width="24" class="tm-entity-image__pic" /></span>
</div></a> <span class="tm-user-info__user"><a href="/ru/users/seasadm/" class="tm-user-info__username">seasadm <!----></a> <span class="tm-article-snippet__datetime-published"><time datetime="2023-02-09T11:02:04.000Z" title="2023-02-09, 19:02">22 часа назад</time></span></span></span>
</div><!---->
</div>
<h2 lang="ru" class="tm-article-snippet__title tm-article-snippet__title_h2" xml:lang="ru">
<a href="/ru/company/gazprombank/blog/715190/" class="tm-article-snippet__title-link" data-article-link=""><span>Что такое GitOps и почему он (почти) бесполезен</span></a>
</h2>
<div class="tm-article-snippet__stats">
<div class="tm-article-complexity tm-article-complexity_complexity-high">
<span class="tm-svg-icon__wrapper tm-article-complexity__icon"><svg height="24" width="24" class="tm-svg-img tm-svg-icon">
<title>
Сложный
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#complexity-high"></use></svg></span> <span class="tm-article-complexity__label">Сложный</span>
</div>
<div class="tm-article-reading-time">
<span class="tm-svg-icon__wrapper tm-article-reading-time__icon"><svg height="24" width="24" class="tm-svg-img tm-svg-icon">
<title>
Время прочтения
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#clock"></use></svg></span> <span class="tm-article-reading-time__label">9 мин</span>
</div><span class="tm-icon-counter tm-data-icons__item" title="Количество просмотров"><svg height="24" width="24" class="tm-svg-img tm-icon-counter__icon">
<title>
Просмотры
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#counter-views"></use></svg> <span class="tm-icon-counter__value">3.4K</span></span>
</div><!---->
<div class="tm-article-snippet__labels-container">
<div class="tm-article-snippet__labels">
<div class="tm-article-snippet__label tm-article-snippet__label_variant-review">
<span>Обзор</span>
</div>
</div>
</div><!----><!---->
</div>
<div class="tm-data-icons">
<!---->
<div class="tm-votes-meter tm-data-icons__item">
<svg height="24" width="24" class="tm-svg-img tm-votes-meter__icon tm-votes-meter__icon tm-votes-meter__icon_appearance-article">
<title>
Всего голосов 34: ↑30 и ↓4
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#counter-rating"></use></svg> <span title="Всего голосов 34: ↑30 и ↓4" class="tm-votes-meter__value tm-votes-meter__value tm-votes-meter__value_positive tm-votes-meter__value_appearance-article tm-votes-meter__value_rating">+26</span>
</div><!----><button title="Добавить в закладки" type="button" class="bookmarks-button tm-data-icons__item"><span title="Добавить в закладки" class="tm-svg-icon__wrapper bookmarks-button__icon"><svg height="24" width="24" class="tm-svg-img tm-svg-icon">
<title>
Добавить в закладки
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#counter-favorite"></use></svg></span> <span title="Количество пользователей, добавивших публикацию в закладки" class="bookmarks-button__counter">30</span></button>
<div class="tm-article-comments-counter-link tm-data-icons__item" title="Читать комментарии">
<a href="/ru/company/gazprombank/blog/715190/comments/" class="tm-article-comments-counter-link__link"><svg height="24" width="24" class="tm-svg-img tm-article-comments-counter-link__icon">
<title>
Комментарии
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#counter-comments"></use></svg> <span class="tm-article-comments-counter-link__value">27</span></a> <a href="/ru/company/gazprombank/blog/715190/comments/" class="tm-article-comments-counter-link__link"><span title="Читать новые комментарии" class="tm-article-comments-counter-link__unread-counter">+27</span></a>
</div><!---->
<div class="v-portal" style="display: none;"></div>
</div>
</li><!---->
</ul>
<div class="daily-articles-block__button-container">
<button type="button" class="daily-articles-block__button btn btn_transparent btn_small">Показать еще</button>
</div>
</div><!---->
</div>
</div><!---->
</section><!----><!----><!---->
</div>
</div>
</div>
</div>
</div>
<div class="tm-page__sidebar">
<div class="tm-layout-sidebar">
<div class="tm-layout-sidebar__placeholder_stick-top"></div>
<div class="tm-sexy-sidebar tm-sexy-sidebar_stick-top" style="margin-top: 0px;">
<!---->
<section class="tm-block tm-block tm-block_spacing-bottom">
<header class="tm-block__header tm-block__header">
<div class="tm-block__header-container">
<h2 class="tm-block__title tm-block__title">
Информация
</h2>
</div><!---->
</header>
<div class="tm-block__body tm-block__body">
<div class="tm-company-basic-info">
<dl class="tm-description-list tm-description-list tm-description-list_variant-columns-nowrap">
<dt class="tm-description-list__title tm-description-list__title tm-description-list__title_variant-columns-nowrap">
Сайт
</dt>
<dd class="tm-description-list__body tm-description-list__body tm-description-list__body_variant-columns-nowrap">
<a href="https://ruvds.com" target="_blank" class="tm-company-basic-info__link">ruvds.com</a>
</dd>
</dl>
<dl class="tm-description-list tm-description-list tm-description-list_variant-columns-nowrap">
<dt class="tm-description-list__title tm-description-list__title tm-description-list__title_variant-columns-nowrap">
Дата регистрации
</dt>
<dd class="tm-description-list__body tm-description-list__body tm-description-list__body_variant-columns-nowrap">
<time datetime="2016-03-18T05:43:01.000Z" title="2016-03-18, 13:43">18 марта 2016</time>
</dd>
</dl>
<dl class="tm-description-list tm-description-list tm-description-list_variant-columns-nowrap">
<dt class="tm-description-list__title tm-description-list__title tm-description-list__title_variant-columns-nowrap">
Дата основания
</dt>
<dd class="tm-description-list__body tm-description-list__body tm-description-list__body_variant-columns-nowrap">
<time datetime="2015-07-26T16:00:00.000Z" title="2015-07-27, 00:00">27 июля 2015</time>
</dd>
</dl>
<dl class="tm-description-list tm-description-list tm-description-list_variant-columns-nowrap">
<dt class="tm-description-list__title tm-description-list__title tm-description-list__title_variant-columns-nowrap">
Численность
</dt>
<dd class="tm-description-list__body tm-description-list__body tm-description-list__body_variant-columns-nowrap">
1130 человек
</dd>
</dl>
<dl class="tm-description-list tm-description-list tm-description-list_variant-columns-nowrap">
<dt class="tm-description-list__title tm-description-list__title tm-description-list__title_variant-columns-nowrap">
Местоположение
</dt>
<dd class="tm-description-list__body tm-description-list__body tm-description-list__body_variant-columns-nowrap">
Россия
</dd>
</dl>
<dl class="tm-description-list tm-description-list tm-description-list_variant-columns-nowrap">
<dt class="tm-description-list__title tm-description-list__title tm-description-list__title_variant-columns-nowrap">
Представитель
</dt>
<dd class="tm-description-list__body tm-description-list__body tm-description-list__body_variant-columns-nowrap">
<a href="/ru/users/ruvds/" class="tm-company-basic-info__link">ruvds</a>
</dd>
</dl>
</div>
</div><!---->
</section>
<div class="tm-company-widgets">
<section class="tm-block tm-block tm-block_spacing-bottom" type="links">
<header class="tm-block__header tm-block__header">
<div class="tm-block__header-container">
<h2 class="tm-block__title tm-block__title">
Ссылки
</h2>
</div><!---->
</header>
<div class="tm-block__body tm-block__body">
<ul class="tm-widget-links__list">
<li class="tm-widget-links__item">
<a href="https://ruvds.com/vps_start" rel="nofollow noreferrer" target="_blank" class="tm-widget-links__link">VPS / VDS сервер от 130 рублей в месяц.</a> <small class="tm-widget-links__host">ruvds.com</small>
</li>
<li class="tm-widget-links__item">
<a href="https://ruvds.com/ru-rub/data" rel="nofollow noreferrer" target="_blank" class="tm-widget-links__link">Дата-центры RUVDS в Москве, Санкт-Петербурге, Казани, Екатеринбурге, Новосибирске, Лондоне, Франкфурте, Цюрихе, Амстердаме</a> <small class="tm-widget-links__host">ruvds.com</small>
</li>
<li class="tm-widget-links__item">
<a href="https://ruvds.com/ru-rub/faq" rel="nofollow noreferrer" target="_blank" class="tm-widget-links__link">Помощь и вопросы</a> <small class="tm-widget-links__host">ruvds.com</small>
</li>
<li class="tm-widget-links__item">
<a href="https://ruvds.com/ru-rub/partner" rel="nofollow noreferrer" target="_blank" class="tm-widget-links__link">Партнерская программа RUVDS</a> <small class="tm-widget-links__host">ruvds.com</small>
</li>
<li class="tm-widget-links__item">
<a href="https://ruvds.com/vps_start" rel="nofollow noreferrer" target="_blank" class="tm-widget-links__link">VPS (CPU 1x2ГГц, RAM 512Mb, SSD 10 Gb) — 190 рублей в месяц</a> <small class="tm-widget-links__host">ruvds.com</small>
</li>
<li class="tm-widget-links__item">
<a href="https://ruvds.com/ru/windows/" rel="nofollow noreferrer" target="_blank" class="tm-widget-links__link">VPS Windows от 523 рублей в месяц. Бесплатный тестовый период 3 дня.</a> <small class="tm-widget-links__host">ruvds.com</small>
</li>
<li class="tm-widget-links__item">
<a href="https://ruvds.com/ru-rub/data/zur1" rel="nofollow noreferrer" target="_blank" class="tm-widget-links__link">VDS в Цюрихе. Дата-центр TIER III — швейцарское качество по низкой цене.</a> <small class="tm-widget-links__host">ruvds.com</small>
</li>
<li class="tm-widget-links__item">
<a href="https://ruvds.com/ru-rub/kaspersky" rel="nofollow noreferrer" target="_blank" class="tm-widget-links__link">Антивирусная защита виртуального сервера. Легкий агент для VPS.</a> <small class="tm-widget-links__host">ruvds.com</small>
</li>
<li class="tm-widget-links__item">
<a href="https://ruvds.com/ru-rub/data/eng" rel="nofollow noreferrer" target="_blank" class="tm-widget-links__link">VPS в Лондоне. Дата-центр TIER III — английская точность за рубли.</a> <small class="tm-widget-links__host">ruvds.com</small>
</li>
<li class="tm-widget-links__item">
<a href="https://ruvds.com/ru-rub/" rel="nofollow noreferrer" target="_blank" class="tm-widget-links__link">VPS с видеокартой на мощных серверах 3,4ГГц</a> <small class="tm-widget-links__host">ruvds.com</small>
</li>
</ul>
</div><!---->
</section>
<section class="tm-block tm-block tm-block_spacing-bottom" type="applications">
<header class="tm-block__header tm-block__header">
<div class="tm-block__header-container">
<h2 class="tm-block__title tm-block__title">
Приложения
</h2>
</div><!---->
</header>
<div class="tm-block__body tm-block__body">
<ul class="tm-widget-applications__list">
<li class="tm-widget-applications__item">
<article class="tm-widget-applications__card">
<aside class="tm-widget-applications__aside">
<img alt="" src="//habrastorage.org/getpro/habr/app/6ee/74b/d87/6ee74bd87dbf84e43cdcc0abd0d13a3f.png" class="tm-widget-applications__image" />
</aside>
<div class="tm-widget-applications__body">
<h3 class="tm-widget-applications__card-title">
RUVDS Client
</h3>
<p class="tm-widget-applications__card-description">
Приложение для мониторинга и управления виртуальными серверами RUVDS с мобильных устройств.
</p>
<ul class="tm-widget-applications__card-links">
<li class="tm-widget-applications__card-link-item">
<a href="https://play.google.com/store/apps/details?id=com.rudvs.ruvdsclient" rel="nofollow noreferrer" target="_blank" class="tm-widget-applications__card-link">Android</a>
</li>
<li class="tm-widget-applications__card-link-item">
<a href="https://apps.apple.com/ru/app/ruvds-client/id1492272255?ign-mpt=uo%3D4" rel="nofollow noreferrer" target="_blank" class="tm-widget-applications__card-link">iOS</a>
</li>
</ul>
</div>
</article>
</li>
</ul>
</div><!---->
</section>
<section class="tm-block tm-block tm-block_spacing-bottom" type="banner">
<header class="tm-block__header tm-block__header tm-block__header_variant-borderless">
<div class="tm-block__header-container">
<h2 class="tm-block__title tm-block__title">
Виджет
</h2>
</div><!---->
</header>
<div class="tm-block__body tm-block__body">
<div class="tm-widget-banner-content">
<a href="https://t.me/ruvds_community/170" class="tm-widget-banner-content__image-wrapper"><img alt="" src="//habrastorage.org/getpro/habr/widget/c82/e69/b0e/c82e69b0ea8c4bdbb7e87ebe7778e04e.jpg" class="tm-widget-banner-content__image tm-widget-banner-content__image_align-center" /></a> <!---->
</div>
</div><!---->
</section>
<section class="tm-block tm-block tm-block_spacing-bottom" type="banner">
<header class="tm-block__header tm-block__header tm-block__header_variant-borderless">
<div class="tm-block__header-container">
<h2 class="tm-block__title tm-block__title">
Виджет
</h2>
</div><!---->
</header>
<div class="tm-block__body tm-block__body">
<div class="tm-widget-banner-content">
<a href="https://ruvds.com/ru-rub?utm_source=habr&amp;utm_medium=banner&amp;utm_campaign=promo&amp;utm_content=link&amp;utm_term=registration" class="tm-widget-banner-content__image-wrapper"><img alt="" src="//habrastorage.org/getpro/habr/widget/2fe/f45/bce/2fef45bce917c5389a3cc4df7013f5e0.jpg" class="tm-widget-banner-content__image tm-widget-banner-content__image_align-center" /></a> <!---->
</div>
</div><!---->
</section>
</div>
<section class="tm-block tm-block tm-block_spacing-around">
<header class="tm-block__header tm-block__header">
<div class="tm-block__header-container">
<h2 class="tm-block__title tm-block__title">
Блог на Хабре
</h2>
</div><!---->
</header>
<div class="tm-block__body tm-block__body">
<ul class="tm-article-list-block__list">
<li class="tm-article-list-block__item">
<article class="tm-article-snippet-block-sidebar tm-article-snippet-block-sidebar_preview">
<div class="tm-article-snippet-block__user-meta">
<div class="tm-article-snippet-block__date">
<time datetime="2023-02-10T09:00:01.000Z" title="2023-02-10, 17:00">11 минут назад</time>
</div>
</div>
<h2 class="tm-article-title tm-article-title_sidebar">
<a href="/ru/company/ruvds/blog/715686/" class="tm-article-title__link"><span>Большой тест 5 «азиатских» аккумуляторов D23. Часть 4: заряжаем током 80 ампер</span></a>
</h2>
<div class="tm-data-icons">
<!----><!----><span class="tm-icon-counter tm-data-icons__item" title="Количество просмотров"><svg height="24" width="24" class="tm-svg-img tm-icon-counter__icon">
<title>
Просмотры
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#counter-views"></use></svg> <span class="tm-icon-counter__value">77</span></span> <!---->
<div class="tm-article-comments-counter-link tm-data-icons__item" title="Читать комментарии">
<a href="/ru/company/ruvds/blog/715686/comments/" class="tm-article-comments-counter-link__link"><svg height="24" width="24" class="tm-svg-img tm-article-comments-counter-link__icon">
<title>
Комментарии
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#counter-comments"></use></svg> <span class="tm-article-comments-counter-link__value">0</span></a> <!---->
</div><!---->
<div class="v-portal" style="display: none;"></div>
</div>
</article>
</li>
<li class="tm-article-list-block__item">
<article class="tm-article-snippet-block-sidebar tm-article-snippet-block-sidebar_preview">
<div class="tm-article-snippet-block__user-meta">
<div class="tm-article-snippet-block__date">
<time datetime="2023-02-09T09:00:01.000Z" title="2023-02-09, 17:00">вчера в 17:00</time>
</div>
</div>
<h2 class="tm-article-title tm-article-title_sidebar">
<a href="/ru/company/ruvds/blog/714946/" class="tm-article-title__link"><span>Жидкий микрофон, или «в этом доме тебя слушают даже стены»</span></a>
</h2>
<div class="tm-data-icons">
<!----><!----><span class="tm-icon-counter tm-data-icons__item" title="Количество просмотров"><svg height="24" width="24" class="tm-svg-img tm-icon-counter__icon">
<title>
Просмотры
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#counter-views"></use></svg> <span class="tm-icon-counter__value">14K</span></span> <!---->
<div class="tm-article-comments-counter-link tm-data-icons__item" title="Читать комментарии">
<a href="/ru/company/ruvds/blog/714946/comments/" class="tm-article-comments-counter-link__link"><svg height="24" width="24" class="tm-svg-img tm-article-comments-counter-link__icon">
<title>
Комментарии
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#counter-comments"></use></svg> <span class="tm-article-comments-counter-link__value">68</span></a> <a href="/ru/company/ruvds/blog/714946/comments/" class="tm-article-comments-counter-link__link"><span title="Читать новые комментарии" class="tm-article-comments-counter-link__unread-counter">+68</span></a>
</div><!---->
<div class="v-portal" style="display: none;"></div>
</div>
</article>
</li>
<li class="tm-article-list-block__item">
<article class="tm-article-snippet-block-sidebar tm-article-snippet-block-sidebar_preview">
<div class="tm-article-snippet-block__user-meta">
<div class="tm-article-snippet-block__date">
<time datetime="2023-02-08T13:00:02.000Z" title="2023-02-08, 21:00">8 фев в 21:00</time>
</div>
</div>
<h2 class="tm-article-title tm-article-title_sidebar">
<a href="/ru/company/ruvds/blog/715638/" class="tm-article-title__link"><span>Повышаем производительность и безопасность мониторингом логов и метрик</span></a>
</h2>
<div class="tm-data-icons">
<!----><!----><span class="tm-icon-counter tm-data-icons__item" title="Количество просмотров"><svg height="24" width="24" class="tm-svg-img tm-icon-counter__icon">
<title>
Просмотры
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#counter-views"></use></svg> <span class="tm-icon-counter__value">4.5K</span></span> <!---->
<div class="tm-article-comments-counter-link tm-data-icons__item" title="Читать комментарии">
<a href="/ru/company/ruvds/blog/715638/comments/" class="tm-article-comments-counter-link__link"><svg height="24" width="24" class="tm-svg-img tm-article-comments-counter-link__icon">
<title>
Комментарии
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#counter-comments"></use></svg> <span class="tm-article-comments-counter-link__value">1</span></a> <a href="/ru/company/ruvds/blog/715638/comments/" class="tm-article-comments-counter-link__link"><span title="Читать новые комментарии" class="tm-article-comments-counter-link__unread-counter">+1</span></a>
</div><!---->
<div class="v-portal" style="display: none;"></div>
</div>
</article>
</li>
<li class="tm-article-list-block__item">
<article class="tm-article-snippet-block-sidebar tm-article-snippet-block-sidebar_preview">
<div class="tm-article-snippet-block__user-meta">
<div class="tm-article-snippet-block__date">
<time datetime="2023-02-08T09:00:01.000Z" title="2023-02-08, 17:00">8 фев в 17:00</time>
</div>
</div>
<h2 class="tm-article-title tm-article-title_sidebar">
<a href="/ru/company/ruvds/blog/710546/" class="tm-article-title__link"><span>Как поиграть в Quake для DOS по сети в 2023 году</span></a>
</h2>
<div class="tm-data-icons">
<!----><!----><span class="tm-icon-counter tm-data-icons__item" title="Количество просмотров"><svg height="24" width="24" class="tm-svg-img tm-icon-counter__icon">
<title>
Просмотры
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#counter-views"></use></svg> <span class="tm-icon-counter__value">5.9K</span></span> <!---->
<div class="tm-article-comments-counter-link tm-data-icons__item" title="Читать комментарии">
<a href="/ru/company/ruvds/blog/710546/comments/" class="tm-article-comments-counter-link__link"><svg height="24" width="24" class="tm-svg-img tm-article-comments-counter-link__icon">
<title>
Комментарии
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#counter-comments"></use></svg> <span class="tm-article-comments-counter-link__value">18</span></a> <a href="/ru/company/ruvds/blog/710546/comments/" class="tm-article-comments-counter-link__link"><span title="Читать новые комментарии" class="tm-article-comments-counter-link__unread-counter">+18</span></a>
</div><!---->
<div class="v-portal" style="display: none;"></div>
</div>
</article>
</li>
<li class="tm-article-list-block__item">
<article class="tm-article-snippet-block-sidebar tm-article-snippet-block-sidebar_preview">
<div class="tm-article-snippet-block__user-meta">
<div class="tm-article-snippet-block__date">
<time datetime="2023-02-07T13:00:01.000Z" title="2023-02-07, 21:00">7 фев в 21:00</time>
</div>
</div>
<h2 class="tm-article-title tm-article-title_sidebar">
<a href="/ru/company/ruvds/blog/715258/" class="tm-article-title__link"><span>Какой метод генерации аудио лучший? Сравнение GAN, VAE и Diffusion</span></a>
</h2>
<div class="tm-data-icons">
<!----><!----><span class="tm-icon-counter tm-data-icons__item" title="Количество просмотров"><svg height="24" width="24" class="tm-svg-img tm-icon-counter__icon">
<title>
Просмотры
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#counter-views"></use></svg> <span class="tm-icon-counter__value">2.2K</span></span> <!---->
<div class="tm-article-comments-counter-link tm-data-icons__item" title="Читать комментарии">
<a href="/ru/company/ruvds/blog/715258/comments/" class="tm-article-comments-counter-link__link"><svg height="24" width="24" class="tm-svg-img tm-article-comments-counter-link__icon">
<title>
Комментарии
</title>
<use xlink:href="/img/megazord-v28.78dd0d98..svg#counter-comments"></use></svg> <span class="tm-article-comments-counter-link__value">3</span></a> <a href="/ru/company/ruvds/blog/715258/comments/" class="tm-article-comments-counter-link__link"><span title="Читать новые комментарии" class="tm-article-comments-counter-link__unread-counter">+3</span></a>
</div><!---->
<div class="v-portal" style="display: none;"></div>
</div>
</article>
</li><!---->
</ul>
</div><!---->
</section><!----><!---->
</div>
</div>
</div>
</div>
</div>
</div>
</main><!---->
</div>
<div class="tm-footer-menu">
<div class="tm-page-width">
<div class="tm-footer-menu__container">
<div class="tm-footer-menu__block">
<p class="tm-footer-menu__block-title">
Ваш аккаунт
</p>
<div class="tm-footer-menu__block-content">
<ul class="tm-footer-menu__list">
<li class="tm-footer-menu__list-item">
<a href="/kek/v1/auth/habrahabr/?back=/ru/company/ruvds/blog/712386/&amp;hl=ru" rel="nofollow" target="_self">Войти</a>
</li>
<li class="tm-footer-menu__list-item">
<a href="/kek/v1/auth/habrahabr-register/?back=/ru/company/ruvds/blog/712386/&amp;hl=ru" rel="nofollow" target="_self">Регистрация</a>
</li>
</ul>
</div>
</div>
<div class="tm-footer-menu__block">
<p class="tm-footer-menu__block-title">
Разделы
</p>
<div class="tm-footer-menu__block-content">
<ul class="tm-footer-menu__list">
<li class="tm-footer-menu__list-item">
<a href="/ru/" class="footer-menu__item-link router-link-active">Публикации</a>
</li>
<li class="tm-footer-menu__list-item">
<a href="/ru/news/" class="footer-menu__item-link">Новости</a>
</li>
<li class="tm-footer-menu__list-item">
<a href="/ru/hubs/" class="footer-menu__item-link">Хабы</a>
</li>
<li class="tm-footer-menu__list-item">
<a href="/ru/companies/" class="footer-menu__item-link">Компании</a>
</li>
<li class="tm-footer-menu__list-item">
<a href="/ru/users/" class="footer-menu__item-link">Авторы</a>
</li>
<li class="tm-footer-menu__list-item">
<a href="/ru/sandbox/" class="footer-menu__item-link">Песочница</a>
</li>
</ul>
</div>
</div>
<div class="tm-footer-menu__block">
<p class="tm-footer-menu__block-title">
Информация
</p>
<div class="tm-footer-menu__block-content">
<ul class="tm-footer-menu__list">
<li class="tm-footer-menu__list-item">
<a href="/ru/docs/help/" class="footer-menu__item-link">Устройство сайта</a>
</li>
<li class="tm-footer-menu__list-item">
<a href="/ru/docs/authors/codex/" class="footer-menu__item-link">Для авторов</a>
</li>
<li class="tm-footer-menu__list-item">
<a href="/ru/docs/companies/corpblogs/" class="footer-menu__item-link">Для компаний</a>
</li>
<li class="tm-footer-menu__list-item">
<a href="/ru/docs/docs/transparency/" class="footer-menu__item-link">Документы</a>
</li>
<li class="tm-footer-menu__list-item">
<a href="https://account.habr.com/info/agreement" target="_blank">Соглашение</a>
</li>
<li class="tm-footer-menu__list-item">
<a href="https://account.habr.com/info/confidential/" target="_blank">Конфиденциальность</a>
</li>
</ul>
</div>
</div>
<div class="tm-footer-menu__block">
<p class="tm-footer-menu__block-title">
Услуги
</p>
<div class="tm-footer-menu__block-content">
<ul class="tm-footer-menu__list">
<li class="tm-footer-menu__list-item">
<a href="https://company.habr.com/ru/corporate-blogs/" target="_blank">Корпоративный блог</a>
</li>
<li class="tm-footer-menu__list-item">
<a href="https://company.habr.com/ru/advertising/" target="_blank">Медийная реклама</a>
</li>
<li class="tm-footer-menu__list-item">
<a href="https://company.habr.com/ru/native-special/" target="_blank">Нативные проекты</a>
</li>
<li class="tm-footer-menu__list-item">
<a href="https://company.habr.com/ru/education-programs/" target="_blank">Образовательные программы</a>
</li>
<li class="tm-footer-menu__list-item">
<a href="https://company.habr.com/ru/hello-startup/" target="_blank">Стартапам</a>
</li>
<li class="tm-footer-menu__list-item">
<a href="/ru/megaprojects/" class="footer-menu__item-link">Мегапроекты</a>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="tm-footer">
<div class="tm-page-width">
<div class="tm-footer__container">
<!---->
<div class="tm-footer__social">
<a href="https://www.facebook.com/habrahabr.ru" rel="nofollow noopener noreferrer" target="_blank" class="tm-svg-icon__wrapper tm-social-icons__icon"><svg height="16" width="16" class="tm-svg-img tm-svg-icon">
<title>
Facebook
</title>
<use xlink:href="/img/social-icons-sprite.svg#social-logo-facebook"></use></svg></a><a href="https://twitter.com/habr_com" rel="nofollow noopener noreferrer" target="_blank" class="tm-svg-icon__wrapper tm-social-icons__icon"><svg height="16" width="16" class="tm-svg-img tm-svg-icon">
<title>
Twitter
</title>
<use xlink:href="/img/social-icons-sprite.svg#social-logo-twitter"></use></svg></a><a href="https://vk.com/habr" rel="nofollow noopener noreferrer" target="_blank" class="tm-svg-icon__wrapper tm-social-icons__icon"><svg height="16" width="16" class="tm-svg-img tm-svg-icon">
<title>
VK
</title>
<use xlink:href="/img/social-icons-sprite.svg#social-logo-vkontakte"></use></svg></a><a href="https://telegram.me/habr_com" rel="nofollow noopener noreferrer" target="_blank" class="tm-svg-icon__wrapper tm-social-icons__icon"><svg height="16" width="16" class="tm-svg-img tm-svg-icon">
<title>
Telegram
</title>
<use xlink:href="/img/social-icons-sprite.svg#social-logo-telegram"></use></svg></a><a href="https://www.youtube.com/channel/UCd_sTwKqVrweTt4oAKY5y4w" rel="nofollow noopener noreferrer" target="_blank" class="tm-svg-icon__wrapper tm-social-icons__icon"><svg height="16" width="16" class="tm-svg-img tm-svg-icon">
<title>
Youtube
</title>
<use xlink:href="/img/social-icons-sprite.svg#social-logo-youtube"></use></svg></a><a href="https://zen.yandex.ru/habr" rel="nofollow noopener noreferrer" target="_blank" class="tm-svg-icon__wrapper tm-social-icons__icon"><svg height="16" width="16" class="tm-svg-img tm-svg-icon">
<title>
Яндекс Дзен
</title>
<use xlink:href="/img/social-icons-sprite.svg#social-logo-zen"></use></svg></a>
</div>
<div class="v-portal" style="display:none;"></div><button class="tm-footer__link"><!---->
Настройка языка</button> <a href="/ru/feedback/" class="tm-footer__link">Техническая поддержка</a> <a href="/berserk-mode-nope" class="tm-footer__link">Вернуться на старую версию</a>
<div class="tm-footer-copyright">
<span class="tm-copyright"><span class="tm-copyright__years">© 20062023,</span> <span class="tm-copyright__name"><a href="https://company.habr.com/" rel="noopener" target="_blank" class="tm-copyright__link">Habr</a></span></span>
</div>
</div>
</div>
</div><!----><!---->
</div>
<div class="vue-portal-target">
<!---->
</div>
</div>
<script src="https://assets.habr.com/habr-web/js/chunk-vendors.a77133ed.js" defer="defer"></script>
<script src="https://assets.habr.com/habr-web/js/8827.cdaee357.js" defer="defer"></script>
<script src="https://assets.habr.com/habr-web/js/app.0c25557a.js" defer="defer"></script>
<script async="async" src="https://www.googletagmanager.com/gtag/js?id=UA-726094-1"></script>
<script>
<![CDATA[
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
]]>
</script>
<script type="text/javascript">
//<![CDATA[
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(24049213, "init", {
defer:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:false,
});
//]]>
</script> <noscript>
<div>
<img src="https://mc.yandex.ru/watch/24049213" style="position:absolute; left:-9999px;" alt="" />
</div></noscript>
<script type="text/javascript">
//<![CDATA[
window.addEventListener('load', function () {
setTimeout(() => {
const img = new Image();
img.src = 'https://vk.com/rtrg?p=VK-RTRG-421343-57vKE';
}, 0);
});
//]]>
</script>
<script src="/js/ads.js" onload="window['zhY4i4nJ9K'] = true"></script>
<div id="K9Jn4i4Yhz" style="display: none;"></div>
<div>
<div>
<div class="Vue-Toastification__container top-left"></div>
</div>
<div>
<div class="Vue-Toastification__container top-center"></div>
</div>
<div>
<div class="Vue-Toastification__container top-right"></div>
</div>
<div>
<div class="Vue-Toastification__container bottom-left"></div>
</div>
<div>
<div class="Vue-Toastification__container bottom-center"></div>
</div>
<div>
<div class="Vue-Toastification__container bottom-right"></div>
</div>
</div>
</body>
</html>