Kamoo re fetoletseng mela e limilione tse 10 ea khoutu ea C++ ho ea ho C++14 standard (ebile ho C++17)

Nakong e fetileng (hoetla 2016), nakong ea nts'etsopele ea mofuta o latelang oa 1C: sethala sa theknoloji ea Enterprise, potso e ile ea hlaha ka har'a sehlopha sa nts'etsopele mabapi le ho tšehetsa maemo a macha. C ++ 14 khoutu ea rona. Phetoho ea boemo bo bocha, joalo ka ha re ne re nahanne, e tla re lumella ho ngola lintho tse ngata ka bokhabane, ka mokhoa o bonolo le ka ts'epo, 'me e tla nolofatsa ts'ehetso le tlhokomelo ea khoutu. 'Me ho bonahala eka ha ho letho le sa tloaelehang phetolelong, haeba e se bakeng sa tekanyo ea motheo oa khoutu le likarolo tse itseng tsa khoutu ea rona.

Bakeng sa ba sa tsebeng, 1C:Enterprise ke tikoloho ea nts'etsopele e potlakileng ea likopo tsa khoebo tse fapaneng le nako ea ts'ebetso ea ts'ebetso ea bona ho li-OS tse fapaneng le li-DBMS. Ka kakaretso, sehlahisoa se na le:

Re leka ho ngola khoutu e tšoanang bakeng sa litsamaiso tse fapaneng tsa ts'ebetso ka hohle kamoo ho ka khonehang - motheo oa khoutu ea seva ke 99% e tloaelehileng, setsi sa khoutu ea bareki se ka bang 95%. 1C: Sethala sa thekenoloji ea Khoebo e ngotsoe haholo ka C++ 'me likarolo tse ka bang tsa khoutu li fanoe ka tlase:

  • Linea tse limilione tse 10 tsa khoutu ea C ++,
  • lifaele tse likete tse 14,
  • lihlopha tse likete tse 60,
  • mekhoa ea halofo ea milione.

'Me lintho tsena kaofela li ne li tlameha ho fetoleloa ho C++14. Kajeno re tla u bolella hore na re entse sena joang le seo re kopaneng le sona ts'ebetsong.

Kamoo re fetoletseng mela e limilione tse 10 ea khoutu ea C++ ho ea ho C++14 standard (ebile ho C++17)

Boithorollo

Ntho e 'ngoe le e' ngoe e ngotsoeng ka tlase mabapi le mosebetsi o liehang / o potlakileng, (eseng) tšebeliso e kholo ea mohopolo ka ho kenya ts'ebetsong ea lihlopha tse tloaelehileng lilaebraring tse fapaneng li bolela ntho e le 'ngoe: sena ke' nete HO RONA. Ho ka etsahala hore ts'ebetsong e tloaelehileng e tla tšoanela mesebetsi ea hau hantle. Re qalile mesebetsing ea rona: re nkile lintlha tse neng li tloaelehile ho bareki ba rona, ra tsamaisa maemo a tloaelehileng ho bona, ra sheba ts'ebetso, boholo ba mohopolo o sebelisitsoeng, joalo-joalo, mme ra sekaseka hore na rona le bareki ba rona re khotsofetse ke liphetho tse joalo kapa che. . Mme ba sebeditse ho itshetlehile ka tsona.

Seo re neng re e-na le sona

Qalong, re ile ra ngola khoutu bakeng sa sethala sa 1C:Enterprise 8 re sebelisa Microsoft Visual Studio. Morero o qalile mathoasong a lilemo tsa bo-2000 mme re ne re e-na le mofuta oa Windows-feela. Ka tlhaho, ho tloha ka nako eo khoutu e 'nile ea ntlafatsoa ka mafolofolo, mekhoa e mengata e ngotsoe bocha ka ho feletseng. Empa khoutu e ngotsoe ho latela maemo a 1998, 'me, mohlala, li-brackets tsa rona tse nepahetseng li ne li arotsoe ke libaka e le hore ho bokella ho ka atleha, ka tsela ena:

vector<vector<int> > IntV;

Ka 2006, ka tokollo ea sethala sa 8.1, re ile ra qala ho tšehetsa Linux mme ra fetohela ho laeborari e tloaelehileng ea mokha oa boraro. STLPort. E 'ngoe ea mabaka a phetoho e ne e le ho sebetsa ka mela e pharaletseng. Khoutung ea rona, re sebelisa std::wstring, e ipapisitseng le mofuta oa wchar_t, hohle. Boholo ba eona ho Windows ke li-byte tse 2, 'me ho Linux ea kamehla ke li-byte tse 4. Sena se ile sa lebisa ho se lumellaneng ha li-protocol tsa rona tsa binary lipakeng tsa bareki le seva, hammoho le lintlha tse fapaneng tse phehellang. U sebelisa likhetho tsa gcc, u ka hlakisa hore boholo ba wchar_t nakong ea ho bokelloa le tsona ke li-byte tse 2, empa joale u ka lebala ka ho sebelisa laeborari e tloaelehileng ho tsoa ho moqapi, hobane e sebelisa glibc, eo le eona e hlophisitsoeng bakeng sa 4-byte wchar_t. Mabaka a mang e ne e le ts'ebetsong e ntle ea litlelase tse tloaelehileng, tšehetso ea litafole tsa hash, esita le ho etsisa semantics ea ho tsamaea ka har'a lijana, tseo re neng re li sebelisa ka mafolofolo. 'Me lebaka le leng hape, joalo ka ha ba re qetellong, e ne e le ts'ebetso ea likhoele. Re ne re na le sehlopha sa rona sa likhoele, hobane ... Ka lebaka la litlhaloso tsa software ea rona, ts'ebetso ea likhoele e sebelisoa haholo mme ho rona sena se bohlokoa.

Khoele ea rona e ipapisitse le mehopolo ea ho ntlafatsa likhoele tse hlahisitsoeng morao koana lilemong tsa bo-2000 Andrei Alexandrescu. Hamorao, ha Alexandrescu a sebetsa ho Facebook, ka tlhahiso ea hae, mohala o ne o sebelisoa ho enjene ea Facebook e neng e sebetsa ka melao-motheo e tšoanang (sheba laebrari. booatla).

Mohala oa rona o sebelisitse theknoloji e 'meli ea mantlha ea ntlafatso:

  1. Bakeng sa litekanyetso tse khutšoane, ho sebelisoa buffer e ka hare ho ntho ea khoele ka boeona (e sa hlokeng kabo ea memori e eketsehileng).
  2. Bakeng sa tse ling kaofela, ho sebelisoa mechanics Kopitsa ho Ngola. Boleng ba khoele bo bolokoa sebakeng se le seng, 'me k'haonta ea litšupiso e sebelisoa nakong ea kabelo / phetoho.

Ho potlakisa ho bokelloa ha sethala, re qheletse ka thoko ts'ebetsong ea molapo ho mofuta oa rona oa STLPort (eo re sa kang ra e sebelisa), sena se re file pokello e potlakileng ea 20%. Ka mor'a moo re ile ra tlameha ho sebelisa chelete e fokolang Boost. Boost e sebelisa haholo ho phalla, haholo-holo ho li-API tsa eona tsa tšebeletso (mohlala, bakeng sa ho rema lifate), kahoo re ile ra tlameha ho e fetola ho tlosa tšebeliso ea molapo. Sena se ile sa re thatafalletsa ho fallela liphetolelong tse ncha tsa Boost.

Tsela ea boraro

Ha re fallela ho maemo a C ++ 14, re ile ra nahana ka likhetho tse latelang:

  1. Ntlafatsa STLPort eo re e fetotseng ho maemo a C++14. Khetho e thata haholo, hobane ... tšehetso bakeng sa STLPort e ile ea khaotsoa ka 2010, 'me re ne re tla tlameha ho iketsetsa khoutu eohle ea eona.
  2. Ho fetela ho ts'ebetsong e 'ngoe ea STL e tsamaellanang le C++14. Ke ntho e lakatsehang haholo hore ts'ebetsong ena e be ea Windows le Linux.
  3. Ha o hlophisa bakeng sa OS e 'ngoe le e' ngoe, sebelisa laebrari e hahelletsoeng ka har'a komporo e tsamaellanang.

Khetho ea pele e ile ea hanoa ka ho feletseng ka lebaka la mosebetsi o mongata haholo.

Re ile ra nahana ka khetho ea bobeli ka nako e itseng; nkoang joalo ka mokhethoa libc++, empa ka nako eo e ne e sa sebetse tlas'a Windows. Ho kenya libc ++ ho Windows, u tla tlameha ho etsa mosebetsi o mongata - mohlala, ngola ntho e 'ngoe le e' ngoe e amanang le likhoele, khokahano ea likhoele le atomicity, kaha libc++ e sebelisoa libakeng tsena. POSIX API.

Mme re kgethile tsela ya boraro.

Phetoho

Kahoo, re ile ra tlameha ho khutlisa ts'ebeliso ea STLPort ka lilaebrari tsa batho ba tsamaisanang le tsona (Visual Studio 2015 bakeng sa Windows, gcc 7 bakeng sa Linux, clang 8 bakeng sa macOS).

Ka lehlohonolo, khoutu ea rona e ngotsoe haholo-holo ho latela tataiso mme ha ea ka ea sebelisa mefuta eohle ea maqheka a bohlale, kahoo ho fallela lilaebraring tse ncha ho ile ha tsoela pele hantle, ka thuso ea mangolo a ileng a nkela mabitso a mefuta, lihlopha, libaka tsa mabitso le ho kenyelletsa mohloling. lifaele. Ho falla ho ile ha ama lifaele tsa mohloli oa 10 (ho 000). wchar_t e ile ea nkeloa sebaka ke char14_t; re nkile qeto ea ho tlohela ts'ebeliso ea wchar_t, hobane char000_t e nka li-byte tse 16 ho li-OS tsohle mme ha e senye tšebelisano ea khoutu lipakeng tsa Windows le Linux.

Ho bile le liketsahalo tse nyane. Mohlala, ho STLPort mofetoleli o ne a ka akheloa ka mokhoa o hlakileng ho pointer ho element, 'me libakeng tse ling khoutu ea rona e sebelisitsoe. Lilaeboraring tse ncha ho ne ho se ho sa khonehe ho etsa sena, ’me litemana tsena li ne li lokela ho hlahlobisisoa le ho ngoloa bocha ka letsoho.

Kahoo, ho falla ha khoutu ho felile, khoutu e bokelloa bakeng sa mekhoa eohle ea ho sebetsa. Ke nako ea liteko.

Liteko ka mor'a phetoho li bontšitse ho theoha ha ts'ebetso (libakeng tse ling ho fihlela ho 20-30%) le keketseho ea tšebeliso ea mohopolo (ho fihlela ho 10-15%) ha e bapisoa le phetolelo ea khale ea khoutu. Sena se etsahetse, haholo-holo, ka lebaka la ts'ebetso e tlase ea likhoele tse tloaelehileng. Ka hona, re ile ra tlameha ho sebelisa mohala oa rona hape, o fetotsoeng hanyane.

Karolo e khahlisang ea ts'ebetsong ea lijana lilaeboraring tse kentsoeng le eona e ile ea senoloa: e se nang letho (e se nang lintlha) std::mapa le std::sete ho tsoa lilaeboraring tse ahiloeng ho abela mohopolo. 'Me ka lebaka la likarolo tsa ts'ebetsong, libakeng tse ling ka khoutu ho na le lijana tse ngata tse se nang letho tsa mofuta ona. Lits'oants'o tse tloaelehileng tsa memori li abetsoe hanyane, bakeng sa karolo e le 'ngoe ea motso, empa ho rona sena se ile sa fetoha sa bohlokoa - maemong a mangata, ts'ebetso ea rona e theohile haholo mme ts'ebeliso ea mohopolo e ile ea eketseha (ha e bapisoa le STLPort). Ka hona, ka khoutu ea rona re nkile sebaka sa mefuta ena e 'meli ea lijana ho tloha lilaebraring tse hahiloeng ka ts'ebetsong ea tsona ho tloha Boost, moo lijana tsena li neng li se na tšobotsi ena,' me sena se rarolle bothata ka ho fokotseha le ho eketseha ha mohopolo.

Joalokaha hangata ho etsahala ka mor'a liphetoho tse kholo mererong e meholo, phetisetso ea pele ea khoutu ea mohloli ha ea ka ea sebetsa ntle le mathata, 'me mona, haholo-holo, tšehetso ea li-debugging iterators ts'ebetsong ea Windows e ile ea sebetsa. Mohato ka mohato re ile ra tsoela pele, 'me ka selemo sa 2017 (phetolelo ea 8.3.11 1C: Enterprise) ho falla ho ile ha phethoa.

Liphello

Ho fetohela ho maemo a C++14 ho re nkile likhoeli tse ka bang 6. Boholo ba nako, moqapi a le mong (empa ea tšoanelehang haholo) o ne a sebetsa morerong ona, 'me qetellong baemeli ba lihlopha tse ikarabellang bakeng sa libaka tse itseng ba ile ba ikopanya - UI, sehlopha sa seva, lisebelisoa tsa nts'etsopele le tsamaiso, joalo-joalo.

Phetoho e nolofalitse haholo mosebetsi oa rona oa ho fallela liphetolelong tsa morao-rao tsa maemo. Kahoo, mofuta oa 1C:Enterprise 8.3.14 (e nts'etsopele, tokollo e lokiselitsoeng mathoasong a selemo se tlang) e se e fetiselitsoe ho maemo. C++17.

Kamora ho falla, bahlahisi ba na le likhetho tse ling. Haeba pejana re ne re e-na le mofuta oa rona o fetotsoeng oa STL le sebaka se le seng sa mabitso sa std, joale re na le litlelase tse tloaelehileng ho tsoa lilaeboraring tsa pokello e hahiloeng sebakeng sa mabitso sa stdx, sebakeng sa mabitso sa stdx - mela le lijana tsa rona tse ntlafalitsoeng bakeng sa mesebetsi ea rona, ka matla phetolelo ea morao-rao ea boost. 'Me moqapi o sebelisa litlelase tse loketseng hantle ho rarolla mathata a hae.

Ts'ebetsong ea "matsoalloa" ea baetsi ba ho falla e boetse e thusa ho nts'etsopele (lihahi tse suthisang) bakeng sa lihlopha tse 'maloa. Haeba sehlopha se na le sehahi sa ho sisinyeha 'me sehlopha sena se behiloe ka har'a sets'oants'o, joale STL e ntlafatsa ho kopitsoa ha likarolo ka har'a setshelo (mohlala, ha setshelo se atolosoa mme ho hlokahala ho fetola bokhoni le ho tsamaisa mohopolo hape).

Khaba ea sekontiri

Mohlomong phello e sa thabiseng ka ho fetisisa (empa e seng ea bohlokoa) ea ho falla ke hore re tobane le ho eketseha ha molumo. obj lifaele, 'me sephetho se feletseng sa mohaho o nang le lifaele tsohle tse bohareng o ile oa qala ho nka 60-70 GB. Boitšoaro bona bo bakoa ke likarolo tse ikhethang tsa lilaebrari tse tloaelehileng tsa sejoale-joale, tse seng li sa nyatsehe boholo ba lifaele tsa lits'ebeletso tse hlahisitsoeng. Sena ha se ame ts'ebetso ea kopo e hlophisitsoeng, empa e baka litšitiso tse 'maloa ho nts'etsopele, haholo-holo, e eketsa nako ea ho bokella. Litlhoko tsa sebaka sa mahala sa li-disk ho li-server tsa kaho le mochining oa nts'etsopele le tsona lia eketseha. Bahlahisi ba rona ba sebetsa liphetolelong tse 'maloa tsa sethala ka mokhoa o ts'oanang,' me ka linako tse ling li-gigabyte tse makholo tsa lifaele tse mahareng li baka mathata mosebetsing oa bona. Bothata ha bo monate, empa ha bo bohlokoa; re chechisitse tharollo ea bona hajoale. Re nka theknoloji e le e 'ngoe ea likhetho tsa ho e rarolla momahano (haholo-holo, Google e e sebelisa ha e hlahisa sebatli sa Chrome).

Source: www.habr.com

Eketsa ka tlhaloso