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

1777 lines
208 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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>