Peb sim sau tib txoj cai rau cov kev khiav hauj lwm sib txawv kom ntau li ntau tau - server code puag yog 99% ntau, tus neeg siv code puag yog li 95%. Lub 1C: Kev lag luam thev naus laus zis platform feem ntau yog sau rau hauv C ++ thiab kwv yees tus lej code tau muab hauv qab no:
10 lab kab ntawm C ++ code,
14 cov ntaub ntawv,
60 txhiab chav kawm,
ib nrab lab txoj kev.
Thiab tag nrho cov khoom no yuav tsum tau muab txhais ua C ++ 14. Niaj hnub no peb yuav qhia koj seb peb tau ua li cas thiab peb tau ntsib dab tsi hauv cov txheej txheem.
Tsis lees paub
Txhua yam sau tseg hauv qab no hais txog kev ua haujlwm qeeb / nrawm, (tsis yog) kev siv lub cim xeeb loj los ntawm kev siv cov chav kawm hauv ntau lub tsev qiv ntawv txhais tau tias ib yam: qhov no yog qhov tseeb rau Asmeskas. Nws yog qhov ua tau heev uas cov qauv siv yuav ua tau zoo tshaj plaws rau koj cov dej num. Peb pib los ntawm peb tus kheej cov dej num: peb coj cov ntaub ntawv uas raug rau peb cov neeg siv khoom, khiav cov xwm txheej ntawm lawv, saib cov kev ua tau zoo, cov cim xeeb noj, thiab lwm yam, thiab tshuaj xyuas seb peb thiab peb cov neeg tau txais kev txaus siab rau cov txiaj ntsig zoo li cas lossis tsis. . Thiab lawv ua raws li.
Peb muaj dab tsi
Thaum pib, peb tau sau cov cai rau 1C: Enterprise 8 platform hauv Microsoft Visual Studio. Qhov project pib thaum ntxov 2000s thiab peb muaj Windows nkaus xwb version. Lawm, txij thaum ntawd los cov cai tau nquag tsim, ntau cov txheej txheem tau rov sau dua tshiab. Tab sis txoj cai tau sau raws li 1998 tus qauv, thiab, piv txwv li, peb lub kaum sab xis ntawm lub kaum sab xis tau muab cais los ntawm qhov chaw kom muab tso ua ke ua tiav, zoo li qhov no:
vector<vector<int> > IntV;
Xyoo 2006, nrog rau kev tso tawm ntawm lub platform version 8.1, peb pib txhawb Linux thiab hloov mus rau lub tsev qiv ntawv thib peb. STLPport. Ib qho laj thawj ntawm kev hloov pauv yog ua haujlwm nrog cov kab dav. Hauv peb cov cai, peb siv std::wstring, uas yog raws li hom wchar_t, thoob plaws. Nws qhov loj me hauv Windows yog 2 bytes, thiab hauv Linux lub neej ntawd yog 4 bytes. Qhov no ua rau tsis sib haum xeeb ntawm peb cov kev cai binary ntawm cov neeg siv khoom thiab cov neeg rau zaub mov, nrog rau ntau cov ntaub ntawv tsis tu ncua. Siv cov kev xaiv gcc, koj tuaj yeem qhia meej tias qhov luaj li cas ntawm wchar_t thaum muab tso ua ke kuj yog 2 bytes, tab sis tom qab ntawd koj tuaj yeem tsis nco qab txog kev siv lub tsev qiv ntawv txheem los ntawm lub compiler, vim nws siv glibc, uas nyob rau hauv lem yog compiled rau ib tug 4-byte wchar_t. Lwm qhov laj thawj yog kev ua kom zoo dua ntawm cov chav kawm, kev txhawb nqa rau cov rooj hash, thiab txawm tias emulation ntawm cov ntsiab lus ntawm kev txav mus rau hauv cov thawv, uas peb nquag siv. Thiab ib qho laj thawj ntxiv, raws li lawv hais kawg tab sis tsis kawg, yog txoj hlua ua haujlwm. Peb muaj peb tus kheej chav kawm rau cov hlua, vim ... Vim qhov tshwj xeeb ntawm peb cov software, txoj hlua ua haujlwm tau siv dav heev thiab rau peb qhov no tseem ceeb heev.
Peb txoj hlua yog raws li txoj hlua optimization tswv yim qhia rov qab rau thaum ntxov 2000s Andrei Alexandrescu: koj puas xav tau ntau tus thwjtim?. Tom qab ntawd, thaum Alexandrescu ua haujlwm ntawm Facebook, ntawm nws qhov kev xav, ib kab tau siv hauv Facebook lub cav uas ua haujlwm ntawm cov ntsiab lus zoo sib xws (saib lub tsev qiv ntawv niag ruam).
Peb kab siv ob lub ntsiab optimization technologies:
Rau qhov tseem ceeb luv luv, ib qho kev tsis sib xws hauv cov khoom siv nws tus kheej yog siv (tsis tas yuav tsum tau faib lub cim xeeb ntxiv).
Rau txhua lwm yam, mechanics yog siv Luam rau Sau. Txoj hlua tus nqi yog khaws cia rau hauv ib qho chaw, thiab siv lub txee siv thaum ua haujlwm / hloov kho.
Txhawm rau ua kom lub platform muab tso ua ke, peb tsis suav nrog kev siv kwj los ntawm peb qhov sib txawv ntawm STLPport (uas peb tsis tau siv), qhov no tau muab rau peb txog 20% ββnrawm dua. Tom qab ntawd peb yuav tsum tau siv tsawg boost. Boost ua rau hnyav siv cov kwj dej, tshwj xeeb tshaj yog nyob rau hauv nws cov kev pabcuam APIs (piv txwv li, rau kev txiav), yog li peb yuav tsum tau hloov kho kom tshem tawm kev siv kwj. Qhov no, nyob rau hauv lem, ua rau nws nyuaj rau peb tsiv mus nyob rau tshiab versions ntawm Boost.
Peb txoj kev
Thaum tsiv mus rau C ++ 14 tus qauv, peb xav txog cov kev xaiv hauv qab no:
Hloov kho STLPport peb hloov kho rau C ++ 14 tus qauv. Qhov kev xaiv yog qhov nyuaj heev, vim tias ... kev txhawb nqa rau STLPport tau txiav tawm xyoo 2010, thiab peb yuav tsum tsim tag nrho nws cov cai ntawm peb tus kheej.
Hloov mus rau lwm qhov kev siv STL tau tshaj C ++ 14. Nws yog qhov xav tau tias qhov kev siv no yog rau Windows thiab Linux.
Thaum muab tso ua ke rau txhua OS, siv lub tsev qiv ntawv tsim rau hauv cov compiler sib raug.
Thawj qhov kev xaiv tau raug tsis lees paub tag nrho vim muaj kev ua haujlwm ntau dhau.
Peb xav txog qhov kev xaiv thib ob rau qee lub sijhawm; suav tias yog tus neeg sib tw libc++, tab sis lub sijhawm ntawd nws tsis ua haujlwm hauv Windows. Txhawm rau chaw nres nkoj libc ++ rau Windows, koj yuav tsum tau ua haujlwm ntau - piv txwv li, sau txhua yam koj tus kheej uas tau ua nrog cov xov, xov synchronization thiab atomicity, txij li libc ++ siv hauv cov cheeb tsam no. POSIX API.
Hmoov zoo, peb cov cai tau sau feem ntau raws li cov lus qhia thiab tsis siv txhua hom kev txawj ntse, yog li kev tsiv mus rau cov tsev qiv ntawv tshiab tau ua tiav zoo, nrog kev pab los ntawm cov ntawv sau uas hloov cov npe ntawm hom, chav kawm, namespaces thiab suav nrog hauv qhov chaw. cov ntaub ntawv. Kev tsiv teb tsaws cuam tshuam txog 10 cov ntaub ntawv (tawm ntawm 000). wchar_t tau hloov los ntawm char14_t; peb txiav txim siab tso tseg kev siv wchar_t, vim char000_t siv 16 bytes ntawm txhua OSes thiab tsis ua txhaum cai sib raug ntawm Windows thiab Linux.
Muaj qee qhov kev lom zem me me. Piv txwv li, hauv STLPPort ib qho iterator tuaj yeem cuam tshuam rau tus taw tes rau lub ntsiab lus, thiab hauv qee qhov chaw hauv peb cov cai no tau siv. Hauv cov tsev qiv ntawv tshiab nws tsis tuaj yeem ua qhov no ntxiv lawm, thiab cov nqe lus no yuav tsum tau txheeb xyuas thiab rov sau dua manually.
Yog li, txoj cai tsiv teb tsaws yog ua tiav, cov cai tau muab tso ua ke rau txhua qhov kev khiav haujlwm. Nws yog lub sijhawm rau kev xeem.
Kev ntsuam xyuas tom qab kev hloov pauv tau pom tias qhov kev poob qis hauv kev ua tau zoo (hauv qee qhov chaw mus txog 20-30%) thiab nce kev nco noj (txog 10-15%) piv rau cov lej qub. Qhov no yog, tshwj xeeb tshaj yog vim qhov kev ua tau zoo ntawm cov hlua txheem. Yog li ntawd, peb rov tau siv peb tus kheej, hloov kho me ntsis kab.
Ib qho nthuav tshwj xeeb ntawm kev siv cov ntim hauv cov tsev qiv ntawv kos tau tshwm sim: khoob (tsis muaj cov ntsiab lus) std:: daim ntawv qhia thiab std:: teeb tsa los ntawm cov tsev qiv ntawv built-in faib cov cim xeeb. Thiab vim qhov kev siv cov yam ntxwv, nyob rau hauv qee qhov chaw hauv cov cai heev ntau ntawm cov ntim khoob ntawm hom no yog tsim. Standard nco ntim tau faib me ntsis, rau ib lub hauv paus ntsiab lus, tab sis rau peb qhov no yog qhov tseem ceeb - nyob rau hauv ib tug xov tooj ntawm cov xwm txheej, peb qhov kev ua tau zoo poob qis thiab nco tau nce (piv rau STLPort). Yog li ntawd, hauv peb cov cai peb tau hloov ob hom ntim ntawm cov tsev qiv ntawv built-in nrog lawv cov kev siv los ntawm Boost, qhov twg cov thawv no tsis muaj qhov tshwj xeeb, thiab qhov no daws qhov teeb meem nrog qeeb thiab nce kev nco noj.
Raws li feem ntau tshwm sim tom qab kev hloov pauv loj hauv cov haujlwm loj, thawj qhov kev ua haujlwm ntawm qhov chaws tsis ua haujlwm yam tsis muaj teeb meem, thiab ntawm no, tshwj xeeb, kev txhawb nqa rau kev debugging iterators hauv Windows kev siv tau los ua ke. Ib kauj ruam dhau los peb tau txav mus tom ntej, thiab los ntawm lub caij nplooj ntoo hlav xyoo 2017 (version 8.3.11 1C: Kev Lag Luam) kev tsiv teb tsaws tau tiav.