Canalys: Jaro přichází, globální trh PC meziročně vykvetl o 3 %

12. 4. 2024
Doba čtení: 2 minuty

Sdílet

Autor: Depositphotos
Trh podle analytiků najíždí na pozitivní trajektorii podpořenou refreshem zařízení a přechodem na Windows 11.

Společnost Canalys ve své aktuální analýze informuje, že celosvětový trh PC vkročil do roku 2024 pravou nohou. Celkové dodávky stolních počítačů a notebooků totiž v prvním čtvrtletí meziročně vzrostly o 3,2 % na 57,2 milionu kusů.

Z podrobnějšího pohledu vyplynulo, že segment notebooků (včetně mobilních pracovních stanic) posílil o 4,2 % na 45,1 milionu kusů, zatímco dodávky stolních počítačů (včetně stolních pracovních stanic) se relativně nezměnily a klesly jen o 0,4 % na 12,1 milionu.

S AI se blýská na lepší časy

Analytici zdůrazňují, že přestože jde jen o mírný růst, podtrhuje pokračující oživení poptávky po PC ve všech segmentech, přičemž nákupy by se měly v průběhu roku zrychlovat. Zlepšování by měly povzbudit i trendy v podobě upgradu na systém Windows 11 a počítačů schopných pracovat s AI.

„Růst v prvním čtvrtletí roku 2024 je dobrou předzvěstí silného trhu s PC po celý rok,“ predikuje Ishan Dutt z Canalysu. „Trh bude v nadcházejících čtvrtletích posilovat, protože zákazníci v rámci příprav na rozsáhlý přechod na Windows 11 upřednostňují hardwarové upgrady.“

Současná instalovaná základna osobních počítačů je podle něj větší a starší než kdykoli předtím, což pro trh představuje obrovskou příležitost. Canalys předpovídá, že letos bude téměř 50 milionů dodaných osobních počítačů schopných hardwarově podporovat funkce umělé inteligence.

Graf – Vývoj trhu PC 3Q18–1Q24

Zdroj: Canalys

Neotřesitelné Lenovo

Co se jednotlivých výrobců týče, v prvním čtvrtletí 2024 bylo lídrem trhu Lenovo, které si dokázalo připsat silný 8% růst na 13,7 milionu dodaných PC. Druhé HP naopak v meziročním srovnání spíše stagnovalo a dodalo zhruba 12 milionů kusů.

Bronzovou příčku si zajistil Dell, jenž ovšem zaznamenal 2% pokles dodávek na 9,7 milionu kusů. Čtvrtý Apple si díky uvedení nového modelu MacBook Air na konci čtvrtletí polepšil o 2,5 %, nejsilnější pětici uzavírá Acer s meziročním zlepšením o 5,8 %.

Tabulka – Vývoj trhu PC 1Q24 (miliony kusů)

Výrobce

Prodej 1Q24

Podíl 1Q24

Prodej 1Q23

Podíl 1Q23

Meziroč. změna

1. Lenovo

13,735

24,0 %

12,746

23,0 %

7,8 %

2. HP

12,029

21,0 %

11,999

21,6 %

0,3 %

3. Dell

9,273

16,2 %

9,481

17,1 %

–2,2 %

4. Apple

5,361

9,4 %

5,231

9,4 %

2,5 %

5. Acer

3,727

6,5 %

3,523

6,4 %

5,8 %

ostatní

13,117

22,9 %

12,475

22,5 %

5,1 %

Celkem

57,242

100,0 %

55,455

100,0 %

3,2 %

Zdroj: Canalys

Čtěte dále

Photon Go: Chytrý přenosný projektor s ultra krátkou projekční vzdáleností
Photon Go: Chytrý přenosný projektor s ultra krátkou projekční vzdáleností
Tomáš Břečka je novým country managerem iStyle
Tomáš Břečka je novým country managerem iStyle
Čechům na dark web nejčastěji unikají hesla jako „123456“, „heslo“ nebo „tomasek“
Čechům na dark web nejčastěji unikají hesla jako „123456“, „heslo“ nebo „tomasek“
Arrow posiluje nabídku úložišť, podepsalo smlouvu s Object First
Arrow posiluje nabídku úložišť, podepsalo smlouvu s Object First
České organizace čelí o 44 % více kyberútokům než vloni
České organizace čelí o 44 % více kyberútokům než vloni
Firmy chtějí to nejlepší z obou světů: ukládat data lokálně, ale s globálním zabezpečením
Firmy chtějí to nejlepší z obou světů: ukládat data lokálně, ale s globálním zabezpečením
'; document.getElementById('preroll-iframe').onload = function () { setupIframe(); } prerollContainer = document.getElementsByClassName('preroll-container-iframe')[0]; } function setupIframe() { prerollDocument = document.getElementById('preroll-iframe').contentWindow.document; let el = prerollDocument.createElement('style'); prerollDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:20px;right:25px}"; videoContent = prerollDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('PREROLL sound allowed'); // setUpIMA(true); videoContent.volume = 1; videoContent.muted = false; setUpIMA(); }).catch(function () { console.log('PREROLL sound forbidden'); videoContent.volume = 0; videoContent.muted = true; setUpIMA(); }); } } function setupDimensions() { prerollWidth = Math.min(iinfoPrerollPosition.offsetWidth, 480); prerollHeight = Math.min(iinfoPrerollPosition.offsetHeight, 320); } function setUpIMA() { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Preroll advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = prerollWidth; // adsRequest.linearAdSlotHeight = prerollHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. prerollDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( prerollDocument.getElementById('adContainer'), videoContent); } function unmutePrerollAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } } function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(prerollWidth, prerollHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } function onAdEvent(adEvent) { const ad = adEvent.getAd(); console.log('Preroll event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: if (!ad.isLinear()) { videoContent.play(); } prerollDocument.getElementById('adContainer').style.width = '100%'; prerollDocument.getElementById('adContainer').style.maxWidth = '640px'; prerollDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); if (ad.isLinear()) { intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } prerollDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (prerollLastError === 303) { playYtVideo(); } break; case google.ima.AdEvent.Type.COMPLETE: if (ad.isLinear()) { clearInterval(intervalTimer); } playYtVideo(); break; } } function onAdError(adErrorEvent) { console.log(adErrorEvent.getError()); prerollLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { playYtVideo(); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoPrerollPosition.remove(); playPrerollAd(); } else { return false; } adVolume = 1; return true; } function onContentPauseRequested() { videoContent.pause(); } function onContentResumeRequested() { videoContent.play(); } function onActiveView() { if (prerollContainer) { const containerOffset = prerollContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (prerollPaused) { adsManager.resume(); prerollPaused = false; } return true; } else { if (!prerollPaused) { adsManager.pause(); prerollPaused = true; } } } return false; } function playYtVideo() { iinfoPrerollPosition.remove(); youtubeIframe.style.display = 'block'; youtubeIframe.src += '&autoplay=1&mute=1'; } }
OSZAR »