{"id":214841,"date":"2014-03-20T10:50:03","date_gmt":"2014-03-20T06:50:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=214841"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=214841","title":{"rendered":"<span class=\"post_title\">5 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0434\u0432\u0430 \u0431\u0430\u0439\u0442\u043e\u0432\u044b\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u0430. \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/span>"},"content":{"rendered":"<div class=\"content html_format\">\n<h4>\u0421\u0443\u0442\u044c \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0441\u0442\u0430<\/h4>\n<p>  \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0435\u0439 \u0441\u043e\u0444\u0442\u0438\u043d\u044b \u044f \u0441\u0434\u0435\u043b\u0430\u043b \u0432\u044b\u0432\u043e\u0434 \u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0431\u0443\u0444\u0435\u0440\u043e\u0432.<br \/>  \u0422.\u043a. CRL \u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0434\u0432\u0430 \u043a\u0443\u0441\u043a\u0430 \u043f\u0430\u043c\u044f\u0442\u0438, \u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0431\u044b\u043b\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 \u0441\u043a\u043e\u0440\u0443\u044e \u0440\u0443\u043a\u0443 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e (\u043b\u0438\u0448\u044c \u0431\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e).<br \/>  \u041f\u043e\u0433\u0443\u0433\u043b\u0438\u0432 \u043f\u043e \u0444\u0440\u0430\u0437\u0435 \u00abBest Way to Compare Byte Arrays in .Net\u00bb, \u044f \u043f\u0440\u0438\u0448\u0451\u043b \u0432 \u0437\u0430\u043c\u0435\u0448\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e: \u0432 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u043b\u044e\u0434\u0438 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u0438\u0431\u043e LINQ,<br \/>  \u043b\u0438\u0431\u043e Enumerable.SequenceEqual(), \u0447\u0442\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0434\u043d\u043e \u0438 \u0442\u043e\u0436\u0435. \u0414\u0430\u0436\u0435 \u043d\u0430 SO \u044d\u0442\u043e \u0431\u044b\u043b \u0441\u0430\u043c\u044b\u0439 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442. \u0422.\u0435. \u043a\u0430\u0442\u0430\u0441\u0442\u0440\u043e\u0444\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e \u0437\u0430\u0431\u043b\u0443\u0436\u0434\u0435\u043d\u0438\u0435 \u0432\u0438\u0434\u0430:  <\/p>\n<blockquote><p>Compiler\\run-time environment will optimize your loop so you don&#8217;t need to worry about performance.<\/p><\/blockquote>\n<p>\u0412\u0437\u044f\u0442\u043e <a href=\"http:\/\/stackoverflow.com\/questions\/43289\/comparing-two-byte-arrays-in-net\">\u043e\u0442\u0441\u044e\u0434\u0430.<\/a><\/p>\n<p>  \u0418\u043c\u0435\u043d\u043d\u043e \u043e\u043d\u043e \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u043d\u0430\u0432\u0435\u043b\u043e \u043c\u0435\u043d\u044f \u043d\u0430 \u043c\u044b\u0441\u043b\u044c, \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u043e\u0441\u0442.<\/p>\n<p>  \u042f \u043f\u0440\u043e\u0432\u0451\u043b \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u044f\u0442\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0431\u0443\u0444\u0435\u0440\u043e\u0432, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0438\u0437 C#, \u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u0432 \u0432\u044b\u0431\u043e\u0440\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u0430.<br \/>  \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u044f \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0438 \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b \u043a\u043e\u0434, \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0439 JIT-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c \u0434\u043b\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 x86,<br \/>  \u0430 \u0442\u0430\u043a \u0436\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u043b \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u0434, \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0439 JIT-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c, \u0441 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 CRT \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.<br \/>  <a name=\"habracut\"><\/a><\/p>\n<h4>\u041f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u044f<\/h4>\n<p>  \u041d\u0430\u043f\u0438\u0441\u0430\u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u0443\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u0443 \u0438 \u0434\u043e\u0431\u0438\u0432\u0448\u0438\u0441\u044c \u0435\u0451 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438, \u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b \u043f\u0440\u043e\u0444\u0430\u0439\u043b\u0435\u0440 \u0438 \u0443\u0432\u0438\u0434\u0435\u043b, \u0447\u0442\u043e \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u0431\u0430\u0439\u0442\u043e\u0432.<br \/>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f CompareByteArrays() \u043b\u0435\u0436\u0430\u043b\u0430 \u043d\u0430 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043f\u0443\u0442\u0438, \u0438 \u0441 \u044d\u0442\u0438\u043c \u043d\u0430\u0434\u043e \u0431\u044b\u043b\u043e \u0447\u0442\u043e-\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c.<br \/>  \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e\u043a\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u044f \u043d\u0435 \u0432\u0438\u0434\u0435\u043b: \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u043b\u0438\u0441\u044c \u0437\u0430\u0440\u0430\u043d\u0435\u0435, \u0438 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0438\u0434\u0435\u0439 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0438\u0442\u043e\u0433\u043e\u0432\u0443\u044e \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c, \u0443 \u043c\u0435\u043d\u044f \u043d\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u043e.<br \/>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u043e\u0438\u0441\u043a\u0430 \u0432\u043e \u0432\u0441\u0435\u043c\u0438\u0440\u0443\u043d\u043e\u0439 \u043f\u0430\u0443\u0442\u0438\u043d\u0435 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0440\u0430\u0434\u043e\u0432\u0430\u043b\u0438: \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0431\u044b\u043b\u0438, \u043d\u043e \u043a\u0430\u043a \u0431\u044b\u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u044b \u044d\u0442\u0438 \u0446\u0438\u0444\u0440\u044b, \u043d\u0430 \u043a\u0430\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0432 \u043a\u0430\u043a\u0438\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u0445 \u043d\u0438\u043a\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0435 \u0443\u0434\u043e\u0441\u0443\u0436\u0438\u043b\u0441\u044f.<br \/>  \u0423 \u043c\u0435\u043d\u044f \u0431\u044b\u043b\u0438 \u0441\u0432\u043e\u0438 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u0442\u0435\u043c\u0443 \u0442\u043e\u0433\u043e, \u043a\u0442\u043e \u0438 \u0432 \u043a\u0430\u043a\u0438\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u042f \u0440\u0435\u0448\u0438\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c.<br \/>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c\u0438, \u0442\u0430\u043a \u0447\u0442\u043e \u043c\u044b\u0441\u043b\u044c \u043e \u043f\u043e\u0441\u0442\u0435 \u0441\u044e\u0434\u0430 \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0440\u0435\u043b\u0430.<\/p>\n<h3>\u0427\u0442\u043e \u0438 \u0447\u0435\u043c \u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b<\/h3>\n<p>  <\/p>\n<h4>\u0413\u043b\u0430\u0432\u043d\u043e\u0435<\/h4>\n<p>  \u041a\u043e\u0434 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0441\u044f \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0435 \u0441 Windows 7 x64 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f\u043c\u0438 \u0434\u043b\u044f .Net 4.0 Client Profile, \u0442.\u0435. \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 Microsoft Visual Studion 2010 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 x86, \u0442.\u0435. \u044d\u0442\u043e 32-\u0431\u0438\u0442\u043d\u044b\u0439 \u043a\u043e\u0434. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u044f \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u044e\u0441\u044c, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0434\u043b\u044f 32-\u0431\u0438\u0442\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c. \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u044f \u0441\u0447\u0438\u0442\u0430\u044e, \u0447\u0442\u043e \u0434\u043b\u044f .Net \u043a\u0440\u0430\u0439\u043d\u0435 \u0432\u0430\u0436\u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u044d\u0442\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439 \u043e\u0431\u044a\u0451\u043c \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u0434\u043b\u044f 32-\u0431\u0438\u0442, \u0438 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0438\u0445 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442, \u0430 \u0441 \u043d\u0438\u043c\u0438 \u043d\u0443\u0436\u043d\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c, \u0442.\u0435. \u043e\u043d\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043a\u0440\u0430\u0439\u043d\u0435 \u043c\u0430\u043b\u043e\u043c\u0443 \u0447\u0438\u0441\u043b\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0443\u0436\u043d\u043e 64 \u0431\u0438\u0442\u0430 \u2013 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430\u044f \u0440\u0430\u0437\u0440\u044f\u0434\u043d\u043e\u0441\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439. \u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 64-\u0440\u0430\u0437\u0440\u044f\u0434\u043d\u044b\u0435 x86-\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u044b \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 32-\u0431\u0438\u0442\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 [1][2]. \u041b\u043e\u0433\u0438\u0447\u043d\u043e, \u0447\u0442\u043e Windows x64 \u044d\u0442\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442, \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u044f 32-\u0431\u0438\u0442\u043d\u044b\u0439 \u043a\u043e\u0434 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e [3]. \u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e 32-\u0431\u0438\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 64 \u0431\u0438\u0442\u0430 \u0443\u043c\u043d\u043e\u0436\u0430\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u043f\u0430\u043c\u044f\u0442\u044c \u0438 \u0441\u043d\u0438\u0436\u0430\u0435\u0442 \u0435\u0433\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043f\u0446\u0438\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0440\u0430\u0437\u043c\u0435\u0440 TLB \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u043d\u0435 \u043c\u0435\u043d\u044f\u044e\u0442, \u043a\u044d\u0448 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u2014 \u0442\u043e\u0436\u0435, \u0430 \u0440\u0430\u0437\u043c\u0435\u0440 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u0443\u0434\u0432\u0430\u0438\u0432\u0430\u044e\u0442, \u0447\u0442\u043e \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0435\u0449\u0451 \u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u0433\u0440\u0430\u043d\u0438\u0446\u0443 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 [4].<\/p>\n<h4>\u0420\u0430\u0437\u043c\u0435\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445<\/h4>\n<p>  \u0412 \u043c\u043e\u0435\u0439 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0431\u0430\u0439\u0442\u043e\u0432\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 16 \u0431\u0430\u0439\u0442 \u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043c\u0438 \u043e\u0442 1 \u0434\u043e 4*1024 \u0431\u0430\u0439\u0442. 16 \u0431\u0430\u0439\u0442 \u2014 \u0440\u0430\u0437\u043c\u0435\u0440 MD5, 4 Kb \u2014 \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 Windows, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d \u0431\u044b\u043b \u0432\u044b\u0431\u0440\u0430\u043d \u0434\u043b\u044f \u0431\u0443\u0444\u0435\u0440\u0430 \u0432\u0432\u043e\u0434\u0430-\u0432\u044b\u0432\u043e\u0434\u0430.<br \/>  \u041e\u0434\u043d\u0430\u043a\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u044f \u043d\u0430 \u0431\u043b\u043e\u043a\u0430\u0445 \u043e\u0442 1 \u0431\u0430\u0439\u0442\u0430 \u0434\u043e 1\/2 \u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442\u0430, \u043f\u043e \u0442\u043e\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435, \u0447\u0442\u043e \u0445\u044d\u0448\u0438 \u0431\u044b\u0432\u0430\u044e\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e 16 \u0431\u0430\u0439\u0442, \u043d\u043e \u0438 4, \u0438 \u0434\u0430\u0436\u0435 2 \u0431\u0430\u0439\u0442\u0430 (CRC16, CR\u042132), \u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e 4 \u043a\u0438\u043b\u043e\u0431\u0430\u0439\u0442\u0430, \u043d\u043e \u0438 2 \u041c\u0411[2] \u0438 \u0434\u0430\u0436\u0435 4 \u041c\u0411. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b, \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u0431\u043b\u043e\u043a\u0430\u0445 1\/2 MB, \u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u044b, \u0447\u0442\u043e\u0431\u044b \u0434\u0435\u043b\u0430\u0442\u044c \u0432\u044b\u0432\u043e\u0434 \u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0431\u043b\u043e\u043a\u0430\u043c\u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432, \u043a \u0442\u043e\u043c\u0443 \u0436\u0435 \u043c\u043e\u0451 \u0432\u0440\u0435\u043c\u044f \u043d\u0435 \u0431\u0435\u0437\u0433\u0440\u0430\u043d\u0438\u0447\u043d\u043e (\u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u043b\u0443\u0447\u0448\u0435 \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043e\u0442\u043d\u0438\u043c\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u0443 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430).<\/p>\n<p>  \u0418\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043f\u0435\u0440\u0432\u044b\u0445 \u043f\u0440\u043e\u0433\u043e\u043d\u043e\u0432, \u044f \u0441\u0447\u0451\u043b \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u044b\u043c \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043d\u0430 25 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u0445 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u043b \u0446\u0438\u043a\u043b \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0432\u044b\u0439 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0441\u043e\u0441\u0442\u043e\u044f\u043b \u0438\u0437 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 1 \u0431\u0430\u0439\u0442, \u0430 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0448\u0430\u0433\u0435 \u0440\u0430\u0437\u043c\u0435\u0440 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u0443\u043c\u043d\u043e\u0436\u0430\u043b\u0441\u044f \u043d\u0430 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439 \u043c\u043d\u043e\u0436\u0438\u0442\u0435\u043b\u044c.<\/p>\n<p>  \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0437\u0430\u0434\u0430\u0432\u0430\u043b\u0438\u0441\u044c \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430\u043c\u0438 \u0432 \u043a\u043e\u0434\u0435:  <\/p>\n<pre><code class=\"cs\">        private const int CountArrays = 128; \/\/\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u043d\u0430\u0431\u043e\u0440\u043e\u0432         private const int StartArraySize = 1; \/\/\u0421\u0442\u0430\u0440\u0442\u043e\u0432\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430         private const int MaxArraySize = 512 * 1024; \/\/\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430         private const int StepsCount = 25; \/\/\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0448\u0430\u0433\u043e\u0432          private const int MeasurementsCount = 10; \/\/\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439 <\/code><\/pre>\n<p>  \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0446\u0438\u043a\u043b \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b \u0432\u043e\u0442 \u0442\u0430\u043a:  <\/p>\n<pre><code class=\"cs\">         double sizeMultiplier = 1;          DoInvestigationStep(sizeMultiplier);           const int MaxMultiplier = MaxArraySize \/ StartArraySize;          var stepMmltiplier = Math.Pow( MaxMultiplier, 1 \/ (double)StepsCount );          for (var step = 1; step &lt;= StepsCount; step++)          {             sizeMultiplier = Math.Pow(stepMmltiplier, (double) step);             DoInvestigationStep(sizeMultiplier);          } <\/code><\/pre>\n<p>  \u0420\u0430\u0437\u043c\u0435\u0440 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0448\u0430\u0433\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u043b\u0441\u044f \u0432\u043e\u0442 \u0442\u0430\u043a:  <\/p>\n<pre><code class=\"cs\">         var arraySize = (int) (StartArraySize * p_SizeMultiplier); <\/code><\/pre>\n<h3>\u041f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b<\/h3>\n<h4>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 System.Collections.IStructuralEquatable<\/h4>\n<p>  \u042d\u0442\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u043e\u0432\u044b\u0439 \u0434\u043b\u044f C# \u0441\u043f\u043e\u0441\u043e\u0431, \u043e\u043d \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 .NET 4, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u043b \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u043e\u0441\u043e\u0431\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441: \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u043e \u0431\u044b\u043b\u043e, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u043d \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0439.  <\/p>\n<pre><code class=\"cs\">      private static bool ByteArrayCompareWithIStructuralEquatable(byte[] p_BytesLeft, byte[] p_BytesRight)       {          IStructuralEquatable eqa1 = p_BytesLeft;          return eqa1.Equals(p_BytesRight, StructuralComparisons.StructuralEqualityComparer);       } <\/code><\/pre>\n<h4>LINQ, \u0430 \u0442\u043e\u0447\u043d\u0435\u0435 Enumerable.SequenceEqual()<\/h4>\n<p>  \u042d\u0442\u043e \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u044d\u0442\u043e \u0441\u0430\u043c\u044b\u0439 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434.  <\/p>\n<pre><code class=\"cs\">      private static bool ByteArrayCompareWithSequenceEqual(byte[] p_BytesLeft, byte[] p_BytesRight)       {          return p_BytesLeft.SequenceEqual(p_BytesRight);       } <\/code><\/pre>\n<h4>PInvoke, \u0434\u043b\u044f CRT \u0444\u0443\u043d\u043a\u0446\u0438\u0438 memcmp()<\/h4>\n<p>  \u0422\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u044d\u0442\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0441\u0430\u043c\u044b\u0439 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431, \u043d\u043e \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0442\u0430\u043a: \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0435 \u0440\u0430\u0441\u0445\u043e\u0434\u044b \u043d\u0430 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439 \u0441\u044a\u0435\u0434\u0430\u044e\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u0438 \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0442\u0435\u0440\u044f\u0435\u0442 \u0441\u0432\u043e\u044e \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c.<br \/>  \u0417\u0434\u0435\u0441\u044c \u044f \u043f\u0440\u0438\u0432\u043e\u0436\u0443 \u0435\u0433\u043e \u0432 \u0442\u043c\u043e \u0432\u0438\u0434\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0430\u0448\u0451\u043b \u0435\u0433\u043e \u043d\u0430 SO. \u0418\u043c\u0435\u043d\u043d\u043e \u0432 \u0442\u0430\u043a\u043e\u043c \u0432\u0438\u0434\u0435 \u044f \u0435\u0433\u043e \u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b.<br \/>  \u041d\u0430 PInvoke.net \u043e\u043d \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0430\u0447\u0435.  <\/p>\n<pre><code class=\"cs\">      [DllImport(&quot;msvcrt.dll&quot;, CallingConvention = CallingConvention.Cdecl)]       private static extern int memcmp(byte[] p_BytesLeft, byte[] p_BytesRight, long p_Count);        private static bool ByteArrayCompareWithPInvoke(byte[] p_BytesLeft, byte[] p_BytesRight)       {          \/\/ Validate buffers are the same length.          \/\/ This also ensures that the count does not exceed the length of either buffer.            return p_BytesLeft.Length == p_BytesRight.Length                     && memcmp(p_BytesLeft, p_BytesRight, p_BytesLeft.Length) == 0;       } <\/code><\/pre>\n<h4>\u0412 \u043b\u043e\u0431. \u0422.\u0435. \u043f\u0440\u044f\u043c\u043e\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0431\u0430\u0439\u0442\u043e\u0432 \u0432 \u0446\u0438\u043a\u043b\u0435 for(;;)<\/h4>\n<p>  \u042d\u0442\u043e \u0441\u0430\u043c\u044b\u0439 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0434\u0432\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441.<br \/>  \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043c\u0435\u0442\u043e\u0434 \u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043d\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u044b\u0441\u0442\u0440\u044b\u043c, \u043d\u043e \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0434\u043b\u044f \u043c\u043d\u043e\u0433\u0438\u0445 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0439 \u043e\u043d \u0432\u043f\u043e\u043b\u043d\u0435 \u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c.<\/p>\n<p>  \u041a\u0441\u0442\u0430\u0442\u0438, \u043e\u0434\u043d\u0430 \u0438\u0437 \u0432\u0430\u0440\u0438\u0430\u0446\u0438\u0439 \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0431\u044b\u043b\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0430 \u0432 <a href=\"http:\/\/support.microsoft.com\/kb\/307020\">\u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u043e\u0442 \u0441\u0430\u043c\u0438\u0445 \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u0439 \u0421LR, \u043f\u0440\u0438\u0442\u043e\u043c \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u0442\u043e\u043c \u043a\u043e\u0442\u0435\u043a\u0441\u0442\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u0430 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u0430\u0441\u044c \u043c\u043d\u0435.<br \/>  \u0412\u0438\u0434\u0438\u043c\u043e, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0438\u0445 \u0434\u043e\u043a\u0430\u043d\u0430\u043b\u0438 \u0442\u0430\u043a\u0438\u043c\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u043c\u0438.  <\/p>\n<pre><code class=\"cs\">      private static bool ByteArrayCompareWithSimplest(byte[] p_BytesLeft, byte[] p_BytesRight)       {          if (p_BytesLeft.Length != p_BytesRight.Length)             return false;           var length = p_BytesLeft.Length;           for (int i = 0; i &lt; length; i++)          {             if (p_BytesLeft[i] != p_BytesRight[i])                return false;          }           return true;       } <\/code><\/pre>\n<h4>\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 unsafe-\u043c\u0435\u0442\u043e\u0434 \u043e\u0442 \u0425\u0430\u0444\u043e\u0440\u0430 \u0421\u0442\u0435\u0444\u0430\u043d\u0441\u043e\u043d\u0430<\/h4>\n<p>  \u0410\u0432\u0442\u043e\u0440 \u043c\u0435\u0442\u043e\u0434\u0430 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0434\u0435\u043b\u0430\u0435\u0442 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0431\u043b\u043e\u043a\u0430\u043c\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 64 \u0431\u0438\u0442\u0430 \u0434\u043b\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043d\u0430\u0447\u0430\u043b\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0432\u044b\u0440\u0430\u0432\u043d\u0435\u043d\u043e \u043f\u043e \u0433\u0440\u0430\u043d\u0438\u0446\u0435 QWORD. \u041e\u043d \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u043d\u0435\u0442 QWORD-\u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u044f, \u043d\u043e \u0441 \u043c\u0435\u043d\u044c\u0448\u0435\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e.<br \/>  \u041e\u0434\u043d\u0430\u043a\u043e, \u0432 32 \u0431\u0438\u0442\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0431\u043b\u043e\u043a\u0430\u043c\u0438 \u0432 64 \u0431\u0438\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430: \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f 32 \u0431\u0438\u0442\u043d\u044b\u0435, \u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043f\u0440\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0438\u0445.<br \/>  \u0422\u0430\u043a \u0447\u0442\u043e, \u043a\u0430\u043a \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0434\u0435\u0439\u0441\u0432\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d. \u0412 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u2014 \u0442\u043e\u0447\u043d\u043e \u043d\u0435 64 \u0431\u0438\u0442\u0430.  <\/p>\n<pre><code class=\"cs\">      \/\/ Copyright (c) 2008-2013 Hafthor Stefansson       \/\/ Distributed under the MIT\/X11 software license       \/\/ Ref: http:\/\/www.opensource.org\/licenses\/mit-license.php.       private static unsafe bool UnsafeCompare(byte[] a1, byte[] a2)       {          if (a1 == null || a2 == null || a1.Length != a2.Length)             return false;          fixed (byte* p1 = a1, p2 = a2)          {             byte* x1 = p1, x2 = p2;             int l = a1.Length;             for (int i = 0; i &lt; l \/ 8; i++, x1 += 8, x2 += 8)                if (*((long*) x1) != *((long*) x2))                   return false;             if ((l & 4) != 0)             {                if (*((int*) x1) != *((int*) x2)) return false;                x1 += 4;                x2 += 4;             }             if ((l & 2) != 0)             {                if (*((short*) x1) != *((short*) x2)) return false;                x1 += 2;                x2 += 2;             }             if ((l & 1) != 0)                if (*((byte*) x1) != *((byte*) x2))                   return false;             return true;          }       } <\/code><\/pre>\n<h3>\u041c\u0435\u0442\u043e\u0434\u0438\u043a\u0430 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/h3>\n<p>  <\/p>\n<h4>\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043d\u0430\u0431\u043e\u0440<\/h4>\n<p>  \u0427\u0442\u043e\u0431\u044b \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u044c \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u0431\u043e\u0435\u0432\u044b\u043c \u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u00ab\u0437\u0430\u0441\u0442\u0440\u0435\u0432\u0430\u043d\u0438\u0435\u00bb \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043a\u044d\u0448\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 (\u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u0441 \u043f\u0430\u043c\u044f\u0442\u044c\u044e), \u0431\u044b\u043b\u043e \u0440\u0435\u0448\u0435\u043d\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0438\u0445 \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c, \u0442.\u0435. \u043a\u0430\u0436\u0434\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u0441 \u043a\u0430\u0436\u0434\u044b\u043c.<\/p>\n<p>  \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u0431\u044b\u043b \u0432\u044b\u0431\u0440\u0430\u043d \u00ab\u0437\u0443\u0431\u0447\u0430\u0442\u044b\u0439\u00bb \u043c\u0430\u0441\u0441\u0438\u0432 (\u0432 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u2014 \u00abJagged Array\u00bb). \u0411\u044b\u043b\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>List&lt;byte[]&gt;<\/code> \u0438 <code>LinkedList&lt;byte[]&gt;<\/code>, \u043d\u043e \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b \u043d\u0435 \u0443\u0441\u0442\u0440\u043e\u0438\u043b\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443, \u0445\u043e\u0442\u044f \u0438 \u043c\u0430\u0441\u0441\u0438\u0432 \u0432 .NET \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \u0431\u043b\u0435\u0449\u0435\u0442: CLR \u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0438\u043d\u0434\u0435\u043a\u0441 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434 \u0437\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043c\u0430\u0441\u0441\u0438\u0432 \u0441 \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0431\u0430\u0437\u043e\u0439.<\/p>\n<p>  \u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043b\u0438\u0447\u0430\u043b\u0438\u0441\u044c \u0432\u0441\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b, \u0430 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u043b\u0441\u044f \u0440\u043e\u0432\u043d\u043e \u043f\u043e\u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cs\">      private static void PrepareTestData(int p_ArraySize)       {          for (int i = 0; i &lt; CountArrays; i++)          {             var byteArray = new byte[p_ArraySize];             byteArray[p_ArraySize \/ 2] = (byte) (i & 0x000000ff);              s_arrays[i] = byteArray;          }       } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<h4>\u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0439<\/h4>\n<p>  \u0422\u0430\u043a \u043a\u0430\u043a \u0432\u0441\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u043b\u043e\u0441\u044c \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0441\u043e \u0432\u0441\u0435\u043c\u0438, \u0442\u043e \u043e\u0431\u0449\u0438\u0439 \u0432\u0438\u0434 \u043c\u0435\u0442\u043e\u0434\u0430, \u0432\u0440\u0435\u043c\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u0440\u044f\u043b\u043e\u0441\u044c, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0434\u0432\u0430 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0446\u0438\u043a\u043b\u0430 \u043f\u043e \u0432\u0441\u0435\u043c \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u043c \u043d\u0430\u0431\u043e\u0440\u0430, \u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0438\u0445 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u044b\u0442\u0443\u0435\u043c\u044b\u0439 \u043c\u0435\u0442\u043e\u0434. \u0421\u0443\u0442\u044c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u044c \u043a\u043e\u0434\u043e\u043c:  <\/p>\n<pre><code class=\"cs\">         for (int i = 0; i &lt; CountArrays; i++)             for (int j = 0; j &lt; CountArrays; j++)                Compare( s_arrays[i], s_arrays[j] ); <\/code><\/pre>\n<p>  \u041e\u0434\u043d\u0430\u043a\u043e \u0442\u0443\u0442 \u0435\u0441\u0442\u044c \u043e\u0434\u043d\u043e \u00ab\u043d\u043e\u00bb: \u0435\u0441\u043b\u0438 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u00ab\u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439\u00bb, \u0442\u043e CLR \u0438\u043c\u0435\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0435 \u043f\u0440\u0430\u0432\u043e \u0441\u0430\u043c\u043e \u00ab\u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435\u00bb \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c. \u042f \u0441 \u044d\u0442\u0438\u043c \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u043b\u0441\u044f \u0440\u0430\u043d\u044c\u0448\u0435, \u043a\u043e\u0433\u0434\u0430 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u0441 C++. \u041f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0439 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u00ab-O3\u00bb \u0431\u044b\u043b\u043e \u0432\u0435\u0441\u044c\u043c\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u0442\u0438\u0447\u043d\u043e \u0447\u0442\u043e-\u043b\u0438\u0431\u043e \u0438\u0437\u043c\u0435\u0440\u0438\u0442\u044c, \u0442.\u043a. \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0437 \u0437\u0430 \u0440\u0430\u0437\u043e\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u043b\u043e\u0441\u044c \u043d\u0443\u043b\u0435\u0432\u044b\u043c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0442\u0430\u043a\u043e\u0439 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0431\u044b\u043b\u043e \u0440\u0435\u0448\u0435\u043d\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0430, \u0442\u0430\u043a \u0447\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u00ab\u0430\u043a\u043a\u0443\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f\u00bb \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u043b\u0441\u044f, \u0430 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0431\u0435\u0437 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cs\">         var result = true;          for (int i = 0; i &lt; CountArrays; i++)             for (int j = 0; j &lt; CountArrays; j++)             {                var tmp = Compare( s_arrays[i], s_arrays[j] );                 result = result && tmp;             }          return result; <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0410\u043d\u0430\u043b\u0438\u0437 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cs\">         var stubLocalVar = p_\u0421omparisonMethod();          if (stubLocalVar)             throw new InvalidOperationException(); <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0439 5, \u0430 \u0432\u044b\u0448\u0435\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d \u043e\u0431\u0449\u0438\u0439, \u0442\u043e \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043b\u043e\u0433\u0438\u0447\u043d\u044b\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043e\u0431\u0449\u0438\u0439, \u00ab\u0448\u0430\u0431\u043b\u043e\u043d\u043d\u044b\u0439\u00bb \u043c\u0435\u0442\u043e\u0434, \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0432 \u043d\u0435\u0433\u043e. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0432\u044b\u0437\u043e\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0439<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cs\">      private static bool CompareArraysWithExternalMethod(Func&lt;byte[], byte[], bool&gt; p_Method)       {          var result = true;          for (int i = 0; i &lt; CountArrays; i++)             for (int j = 0; j &lt; CountArrays; j++)             {                var tmp = p_Method( s_arrays[i], s_arrays[j] );                 result = result && tmp;             }          return result;       } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0422\u0430\u043a\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431, \u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e, \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\/\u0432\u0441\u0442\u0430\u0432\u043a\u0443 \u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438, \u043d\u043e \u0432 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0438\u0437\u043b\u0438\u0448\u043d\u044e\u044e \u043a\u043e\u0441\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0437\u043e\u0432\u0430 \u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u0430 (inlining), \u0447\u0442\u043e, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u043f\u043e\u0442\u0435\u0440\u0435 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044f, \u0447\u0442\u043e \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u043c\u043d\u043e\u0433\u043e. \u0418\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u044f\u0442\u044c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432:  <\/p>\n<pre><code class=\"cs\">      private static bool CompareArraysWithUnsafeMethod();       private static bool CompareArraysWithSimplestMethod();       private static bool CompareArraysWithSequenceEqualMethod();       private static bool CompareArraysWithPInvokeMethod();       private static bool CompareArraysWithIStructuralEquatableMethod(); <\/code><\/pre>\n<p>  \u041e\u0434\u043d\u0430\u043a\u043e \u0443\u0440\u043e\u0432\u043d\u0435\u043c \u0432\u044b\u0448\u0435 \u044f \u0443\u0436\u0435 \u043c\u043e\u0433 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434.<\/p>\n<p>  \u0418\u0437 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u0433\u043e \u043d\u0438\u0436\u0435 \u043a\u043e\u0434\u0430 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f MeasureComparisonTime(), \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0438\u0437\u043c\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u043e\u0434\u0430 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0434\u0435\u043b\u0435\u0433\u0430\u0442 \u0442\u0438\u043f\u0430 Func. \u0418\u043c\u0435\u043d\u043d\u043e \u0435\u0433\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438 \u0438\u0437\u043c\u0435\u0440\u044f\u0435\u0442\u0441\u044f.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0424\u0443\u043d\u043a\u0446\u0438\u0438, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u044f\u0449\u0438\u0435 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cs\">      private static long GetMinimalMesuredValue(int p_MeasurementNumber, long p_PreviousValue,                                                  long p_MeasuredValue)       {          var result = p_MeasurementNumber == 0                             ? p_MeasuredValue                             : Math.Min(p_PreviousValue, p_MeasuredValue);          return result;       }        private static long MeasureComparisonTime(Func&lt;bool&gt; p_Method, long p_PreviousTime,                                                 int p_MeasurementNumber)       {          GC.Collect();          GC.Collect();           s_stopwatch.Start();          var stubLocalVar = p_Method();          s_stopwatch.Stop();           if (stubLocalVar)             throw new InvalidOperationException();           var result = GetMinimalMesuredValue(p_MeasurementNumber, p_PreviousTime, s_stopwatch.ElapsedTicks);          s_stopwatch.Reset();           return result;       } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<h4>\u041c\u0435\u0442\u043e\u0434\u0438\u043a\u0430 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439<\/h4>\n<p>  \u0418\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0448\u0442\u0430\u0442\u043d\u043e\u0433\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u043e\u043c\u0435\u0440\u0430 (\u043a\u043b\u0430\u0441\u0441 System.Diagnostics.Stopwatch), \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043b\u0435\u0436\u0438\u0442 QueryPerformanceCounter() (http:\/\/msdn.microsoft.com\/ru-ru\/library\/system.diagnostics.stopwatch(v=vs.110).aspx ). \u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b\u0438 \u043d\u0435 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u044b, \u0430 \u0442\u0438\u043a\u0438: \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u0440\u043e\u0445\u043e\u0442\u043d\u044b\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u0432\u0441\u0435 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u0432 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445 \u0431\u044b\u043b\u0438 \u0431\u044b \u043d\u0443\u043b\u0435\u0432\u044b\u043c\u0438. \u0422\u0430\u043a\u0436\u0435 \u0431\u044b\u043b\u0430 \u0438\u0434\u0435\u044f \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u00ab\u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434\u00bb \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 RDTSC[6], \u043d\u043e, \u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0432\u044b\u0445 \u043f\u0440\u043e\u0433\u043e\u043d\u043e\u0432 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0438, \u0447\u0442\u043e \u0434\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043c\u0435\u0442\u043e\u0434\u0438\u043a\u0438 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u0432\u043f\u043e\u043b\u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442, \u0430 \u0432\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f ProcessThread.ProcessorAffinity, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u044d\u0442\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u043b\u0435\u0436\u0438\u0442 \u0432\u044b\u0448\u0435\u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044b\u0439 \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u0442\u0430\u043a\u0442\u043e\u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430. \u0412\u0441\u0435 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u043b\u0438\u0441\u044c 10 \u0440\u0430\u0437, \u0438 \u0431\u0440\u0430\u043b\u043e\u0441\u044c \u043b\u0443\u0447\u0448\u0435\u0435 \u0432\u0440\u0435\u043c\u044f. \u0427\u0438\u0441\u043b\u043e 10 \u0431\u044b\u043b\u043e \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u043d\u043e \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e, \u043a\u0430\u043a \u0434\u0430\u044e\u0449\u0435\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u043e\u0447\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u0440\u0438 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0442\u0440\u0430\u0442\u0430\u0445 \u0432\u0440\u0435\u043c\u0435\u043d\u0438.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0424\u0443\u043d\u043a\u0446\u0438\u044f, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u044f\u0449\u0430\u044f \u0432\u0441\u0435 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cs\">      private static MeasurementsResults DoMeasurements()       {          MeasurementsResults result;          result.SimplestTime = 0;          result.SequenceEqualTime = 0;          result.PInvokeTime = 0;          result.IStructuralEquatableTime = 0;          result.UnsafeTime = 0;           for (int measurementNumber = 0; measurementNumber &lt; MeasurementsCount; measurementNumber++)          {             Console.WriteLine(&quot;\u0421\u0442\u0430\u0440\u0442\u0443\u0435\u0442 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0435 \u043d\u043e\u043c\u0435\u0440 {0}&quot;, measurementNumber);              result.SimplestTime = MeasureComparisonTime(CompareArraysWithSimplestMethod,                                                         result.SimplestTime,                                                         measurementNumber);              result.SequenceEqualTime = MeasureComparisonTime(CompareArraysWithSequenceEqualMethod,                                                              result.SequenceEqualTime,                                                              measurementNumber);              result.PInvokeTime = MeasureComparisonTime(CompareArraysWithPInvokeMethod,                                                        result.PInvokeTime,                                                        measurementNumber);              result.IStructuralEquatableTime = MeasureComparisonTime(CompareArraysWithIStructuralEquatableMethod,                                                                     result.IStructuralEquatableTime,                                                                     measurementNumber);              result.UnsafeTime = MeasureComparisonTime(CompareArraysWithUnsafeMethod,                                                       result.UnsafeTime,                                                       measurementNumber);          }           return result;       } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<h3>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439 \u0438 \u043f\u0435\u0440\u0432\u044b\u0435 \u0432\u044b\u0432\u043e\u0434\u044b<\/h3>\n<p>  \u041f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430 \u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0434\u043e\u0433\u0430\u0434\u044b\u0432\u0430\u043b\u0441\u044f, \u043a\u0430\u043a\u043e\u0439 \u043c\u0435\u0442\u043e\u0434 \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043f\u043e\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u0435\u043c, \u0430 \u043a\u0430\u043a\u043e\u0439 \u0430\u0443\u0442\u0441\u0430\u0439\u0434\u0435\u0440\u043e\u043c, \u043e\u0434\u043d\u0430\u043a\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043c\u0435\u043d\u044f \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u0443\u0434\u0438\u0432\u0438\u043b\u0438. \u041c\u043e\u0438 \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u044b \u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0432\u0435\u0440\u043d\u044b.  <\/p>\n<table cellspacing=\"2\" cellpadding=\"5\">\n<tbody>\n<tr>\n<th>\u041b\u0443\u0447\u0448\u0435\u0435 \u0432\u0440\u0435\u043c\u044f (\u0442\u0438\u043a\u0438)<\/th>\n<th>\u0420\u0430\u0437\u043c\u0435\u0440 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 (\u0431\u0430\u0439\u0442\u044b)<\/th>\n<th> unsafe <\/th>\n<th> \u0412 \u043b\u043e\u0431 <\/th>\n<th> PInvoke <\/th>\n<th> SequenceEqual <\/th>\n<th> IStructuralEquatable <\/th>\n<\/tr>\n<tr>\n<td> 276   <\/td>\n<td> 1   <\/td>\n<td> 1,7   <\/td>\n<td> 1   <\/td>\n<td> 6   <\/td>\n<td> 10,5   <\/td>\n<td> 55   <\/td>\n<\/tr>\n<tr>\n<td> 276   <\/td>\n<td> 1   <\/td>\n<td> 1,7   <\/td>\n<td> 1   <\/td>\n<td> 6,3   <\/td>\n<td> 10,1   <\/td>\n<td> 55,7   <\/td>\n<\/tr>\n<tr>\n<td> 325   <\/td>\n<td> 2   <\/td>\n<td> 1,3   <\/td>\n<td> 1   <\/td>\n<td> 5,3   <\/td>\n<td> 11   <\/td>\n<td> 95,2   <\/td>\n<\/tr>\n<tr>\n<td> 374   <\/td>\n<td> 4   <\/td>\n<td> 1,1   <\/td>\n<td> 1   <\/td>\n<td> 4,8   <\/td>\n<td> 11,4   <\/td>\n<td> 121,3   <\/td>\n<\/tr>\n<tr>\n<td> 413   <\/td>\n<td> 8   <\/td>\n<td> 1   <\/td>\n<td> 1,3   <\/td>\n<td> 5   <\/td>\n<td> 14,1   <\/td>\n<td> 181,2   <\/td>\n<\/tr>\n<tr>\n<td> 412   <\/td>\n<td> 13   <\/td>\n<td> 1   <\/td>\n<td> 1,7   <\/td>\n<td> 4,7   <\/td>\n<td> 17,5   <\/td>\n<td> 252,5   <\/td>\n<\/tr>\n<tr>\n<td> 490   <\/td>\n<td> 23   <\/td>\n<td> 1   <\/td>\n<td> 2,3   <\/td>\n<td> 3,7   <\/td>\n<td> 22,1   <\/td>\n<td> 364,8   <\/td>\n<\/tr>\n<tr>\n<td> 554   <\/td>\n<td> 39   <\/td>\n<td> 1   <\/td>\n<td> 3,4   <\/td>\n<td> 3,5   <\/td>\n<td> 30,1   <\/td>\n<td> 535,9   <\/td>\n<\/tr>\n<tr>\n<td> 691   <\/td>\n<td> 67   <\/td>\n<td> 1   <\/td>\n<td> 4,3   <\/td>\n<td> 2,9   <\/td>\n<td> 39,1   <\/td>\n<td> 727,5   <\/td>\n<\/tr>\n<tr>\n<td> 887   <\/td>\n<td> 114   <\/td>\n<td> 1   <\/td>\n<td> 5,6   <\/td>\n<td> 2,4   <\/td>\n<td> 50,3   <\/td>\n<td> 964,1   <\/td>\n<\/tr>\n<tr>\n<td> 1212   <\/td>\n<td> 194   <\/td>\n<td> 1   <\/td>\n<td> 4,6   <\/td>\n<td> 2,1   <\/td>\n<td> 61,5   <\/td>\n<td> 1190,9   <\/td>\n<\/tr>\n<tr>\n<td> 1875   <\/td>\n<td> 328   <\/td>\n<td> 1   <\/td>\n<td> 4,8   <\/td>\n<td> 1,8   <\/td>\n<td> 65,8   <\/td>\n<td> 1295,8   <\/td>\n<\/tr>\n<tr>\n<td> 2897   <\/td>\n<td> 556   <\/td>\n<td> 1   <\/td>\n<td> 5   <\/td>\n<td> 1,6   <\/td>\n<td> 71,5   <\/td>\n<td> 1416,9   <\/td>\n<\/tr>\n<tr>\n<td> 4565   <\/td>\n<td> 942   <\/td>\n<td> 1   <\/td>\n<td> 5,3   <\/td>\n<td> 1,4   <\/td>\n<td> 76,3   <\/td>\n<td> 1521,1   <\/td>\n<\/tr>\n<tr>\n<td> 7711   <\/td>\n<td> 1595   <\/td>\n<td> 1   <\/td>\n<td> 5,2   <\/td>\n<td> 1,3   <\/td>\n<td> 76,2   <\/td>\n<td> 1521,2   <\/td>\n<\/tr>\n<tr>\n<td> 12482   <\/td>\n<td> 2702   <\/td>\n<td> 1   <\/td>\n<td> 5,4   <\/td>\n<td> 1,3   <\/td>\n<td> 79,4   <\/td>\n<td> 1593,6   <\/td>\n<\/tr>\n<tr>\n<td> 20692   <\/td>\n<td> 4576   <\/td>\n<td> 1   <\/td>\n<td> 5,5   <\/td>\n<td> 1,2   <\/td>\n<td> 81,2   <\/td>\n<td> 1626,2   <\/td>\n<\/tr>\n<tr>\n<td> 34369   <\/td>\n<td> 7750   <\/td>\n<td> 1   <\/td>\n<td> 5,6   <\/td>\n<td> 1,2   <\/td>\n<td> 82,8   <\/td>\n<td> 1657,1   <\/td>\n<\/tr>\n<tr>\n<td> 58048   <\/td>\n<td> 13124   <\/td>\n<td> 1   <\/td>\n<td> 5,6   <\/td>\n<td> 1,2   <\/td>\n<td> 82,9   <\/td>\n<td> 1661,9   <\/td>\n<\/tr>\n<tr>\n<td> 97511   <\/td>\n<td> 22226   <\/td>\n<td> 1   <\/td>\n<td> 5,6   <\/td>\n<td> 1,2   <\/td>\n<td> 83,6   <\/td>\n<td> 1677,3   <\/td>\n<\/tr>\n<tr>\n<td> 173805   <\/td>\n<td> 37640   <\/td>\n<td> 1   <\/td>\n<td> 5,4   <\/td>\n<td> 1,1   <\/td>\n<td> 79,5   <\/td>\n<td> 1585,7   <\/td>\n<\/tr>\n<tr>\n<td> 295989   <\/td>\n<td> 63743   <\/td>\n<td> 1   <\/td>\n<td> 5,3   <\/td>\n<td> 1,1   <\/td>\n<td> 79,3   <\/td>\n<td> 1574,9   <\/td>\n<\/tr>\n<tr>\n<td> 588797   <\/td>\n<td> 107949   <\/td>\n<td> 1   <\/td>\n<td> 4,6   <\/td>\n<td> 1,1   <\/td>\n<td> 67,5   <\/td>\n<td> 1340,9   <\/td>\n<\/tr>\n<tr>\n<td> 1010768   <\/td>\n<td> 182811   <\/td>\n<td> 1   <\/td>\n<td> 4,6   <\/td>\n<td> 1,1   <\/td>\n<td> 67   <\/td>\n<td> 1340,4   <\/td>\n<\/tr>\n<tr>\n<td> 1705668   <\/td>\n<td> 309590   <\/td>\n<td> 1   <\/td>\n<td> 4,6   <\/td>\n<td> 1,1   <\/td>\n<td> 67,3   <\/td>\n<td> 1334,1   <\/td>\n<\/tr>\n<tr>\n<td> 2885452   <\/td>\n<td> 524287   <\/td>\n<td> 1   <\/td>\n<td> 4,6   <\/td>\n<td> 1,1   <\/td>\n<td> 67,3   <\/td>\n<td> 1329,1   <\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0443\u0434\u0438\u0432\u0438\u043b\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c:<br \/>  \u041f\u0435\u0440\u0432\u043e\u0435: CRT \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u044f\u0437\u0430\u043d\u0430 \u0431\u044b\u0442\u044c \u0445\u043e\u0440\u043e\u0448\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0430, \u0438 \u044f \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043b, \u0447\u0442\u043e \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 (\u0440\u0430\u0437\u043c\u0435\u0440\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430) \u0435\u0451 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u043a\u0440\u043e\u0435\u0442 \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0435 \u0440\u0430\u0441\u0445\u043e\u0434\u044b (overhead) \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430, \u043d\u043e \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e. \u041f\u043e\u0437\u0436\u0435 \u044f \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u043b \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441 \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u043c\u0438 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430, \u043d\u043e \u0434\u0430\u0436\u0435 \u043d\u0430 1.5 \u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442\u0430\u0445 unsafe-\u043a\u043e\u0434 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u0435\u0435.<\/p>\n<p>  \u0412\u0442\u043e\u0440\u043e\u0435: \u044f \u0434\u043e\u0433\u0430\u0434\u044b\u0432\u0430\u043b\u0441\u044f, \u0447\u0442\u043e IStructuralEquatable \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u043c, \u043d\u043e \u0446\u0438\u0444\u0440\u044b \u043c\u0435\u043d\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0440\u0430\u0437\u0438\u043b\u0438: \u0442\u0430\u043a\u043e\u0433\u043e \u044f \u0442\u043e\u0447\u043d\u043e \u043d\u0435 \u043e\u0436\u0438\u0434\u0430\u043b.<\/p>\n<h3>\u0414\u0438\u0430\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0430\u043d\u0430\u043b\u0438\u0437 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 <\/h3>\n<p>  \u0421\u0442\u043e\u043b\u044c \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u0430\u044f \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 unsafe \u0438 Simplest \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u0445 (\u044f \u043e\u0436\u0438\u0434\u0430\u043b \u043d\u0435 \u0431\u043e\u043b\u0435\u0435 \u0434\u0432\u0443\u0445-\u0442\u0440\u0451\u0445\u043a\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u00ab\u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0430\u00bb) \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c, \u0447\u0442\u043e \u0441 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0446\u0438\u043a\u043b\u043e\u0432 \u0438 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0439 \u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0432 .Net \u043d\u0435 \u0432\u0441\u0451 \u0442\u0430\u043a \u0433\u043b\u0430\u0434\u043a\u043e, \u043a\u0430\u043a \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044e\u0442 \u043f\u0440\u0438\u0432\u0435\u0440\u0436\u0435\u043d\u0446\u044b .Net. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u044f \u043d\u0435 \u043e\u0442\u043a\u0430\u0437\u0430\u043b \u0441\u0435\u0431\u0435 \u0432 \u0443\u0434\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u0438\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0440\u0430\u0431\u043e\u0442\u044b JIT&#8217;\u0435\u0440\u0430, \u0442.\u0435. \u043d\u0430 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u0434.<\/p>\n<h4>\u0410\u043d\u0430\u043b\u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 CompareArraysWithSimplestMethod()<\/h4>\n<p>  \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 \u043d\u0430\u0447\u0430\u043b\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u0431\u044b\u043b \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d Thread.Sleep(60 * 1000); \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0440\u0435\u043b\u0438\u0437\u043d\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u0438 \u044f \u043f\u043e\u0434\u0446\u0435\u043f\u0438\u043b\u0441\u044f \u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0443 OllyDebug&#8217;\u043e\u043c. \u0422\u0430\u043a\u043e\u0439 \u0445\u0438\u0442\u0440\u044b\u0439 \u0445\u043e\u0434 \u043d\u0443\u0436\u0435\u043d \u0431\u044b\u043b \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0438 \u0432 \u043a\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435 \u043f\u043e\u0440\u0443\u0448\u0438\u0442\u044c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 CLR \u2014 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u0443 \u0442\u0430\u043a\u043e\u0439, \u043a\u0430\u043a\u0430\u044f \u0435\u0441\u0442\u044c.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/files.rsdn.ru\/67254\/ByteArrayCompareWithSimplest.png\" alt=\"\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u043e\u043a\u043d\u0430 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430 \u0441\u043e \u0441\u0442\u0440\u0435\u043b\u043e\u0447\u043a\u0430\u043c\u0438\"\/><\/p>\n<p>  \u0421\u043f\u0443\u0441\u0442\u0438\u0432\u0448\u0438\u0441\u044c \u0432\u043d\u0438\u0437 \u043f\u043e \u0441\u0442\u0435\u043a\u0443 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u043e\u0442 ntdll.NtDelayExecution() \u0438 SleepEx(), \u044f \u043d\u0430\u0448\u0451\u043b \u0441\u0432\u043e\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0438, \u043f\u043e\u0441\u043b\u0435 \u0435\u0451 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f, \u0431\u044b\u043b \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0440\u0430\u0437 \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e \u0443\u0434\u0438\u0432\u043b\u0451\u043d. \u0427\u0442\u043e \u043c\u043d\u0435 \u0437\u0434\u0435\u0441\u044c \u043e\u0447\u0435\u043d\u044c \u043d\u0435 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u043e\u0441\u044c:  <\/p>\n<ol>\n<li>\u0412\u043c\u0435\u0441\u0442\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 RngChkFail (\u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u0441\u0440\u0430\u0437\u0443), CLR \u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0430!!!<\/li>\n<li>\u0426\u0438\u043a\u043b \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u0432 \u0442\u043e\u043c \u0432\u0438\u0434\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u044f \u0435\u0433\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043b: \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043d\u0435 \u0441\u0442\u0430\u043b \u0435\u0433\u043e \u00ab\u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c\u00bb.<\/li>\n<li>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0442\u0430\u043a \u0438 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0431\u0430\u0439\u0442\u043d\u044b\u043c, \u0445\u043e\u0442\u044f CLR \u0432\u043f\u043e\u043b\u043d\u0435 \u043f\u043e \u0441\u0438\u043b\u0430\u043c \u0431\u044b\u043b\u043e \u0435\u0433\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0434\u0435\u043b\u0430\u0432 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u043e 4 \u0431\u0430\u0439\u0442\u0430 (\u0440\u0430\u0437\u043c\u0435\u0440 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430).<\/li>\n<li>\u0412\u043c\u0435\u0441\u0442\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e return&#8217;\u0430 c \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u044d\u043f\u0438\u043b\u043e\u0433\u043e\u043c \u0438 \u043e\u0447\u0438\u0441\u0442\u043a\u043e\u0439 \u0441\u0442\u0435\u043a\u0430, CLR \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b \u0438\u0445 \u0442\u0440\u0438 \u0440\u0430\u0437\u0430, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0447\u0435\u043c\u0443 \u043a\u043e\u0434 \u00ab\u043e\u043f\u0443\u0445\u00bb. \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442 \u043a\u043e\u0434 \u043d\u0430 C# \u043f\u043e\u0447\u0442\u0438 \u043e\u0434\u0438\u043d \u0432 \u043e\u0434\u0438\u043d. \u0412 \u0441\u0432\u044f\u0437\u0438 \u0441 \u044d\u0442\u0438\u043c \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0432\u043e\u043f\u0440\u043e\u0441: \u0430 \u043e\u043d \u0432\u043e\u043e\u0431\u0449\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b \u043a\u043e\u0434?! \u041e\u043d \u0443\u043c\u0435\u0435\u0442 \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c?<\/li>\n<li>\u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c\u0443 \u043f\u0443\u043d\u043a\u0442\u0443 (\u043e\u043f\u0443\u0445\u0448\u0438\u0439 \u043a\u043e\u0434), \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043d\u0435 \u0431\u044b\u043b\u0430 \u0437\u0430\u0438\u043d\u043b\u0430\u0439\u043d\u0435\u043d\u0430.<\/li>\n<\/ol>\n<h4>\u0410\u043d\u0430\u043b\u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 CompareArraysWithSimplestMethod()<\/p>\n<h4>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0440\u0430\u0437\u0436\u0451\u0433 \u043c\u043e\u0451 \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u0441\u0442\u0432\u043e \u0438 \u043d\u0430\u0432\u0451\u043b \u043d\u0430 \u043c\u044b\u0441\u043b\u044c \u043e\u0431 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445. \u042f \u0440\u0435\u0448\u0438\u043b \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c CRT-\u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0438 unsafe-\u0432\u0430\u0440\u0438\u0430\u043d\u0442. \u0421\u043f\u0435\u0440\u0432\u0430 \u044f \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 unsafe-\u0432\u0430\u0440\u0438\u0430\u043d\u0442. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u044f \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u043b \u0442\u0435 \u0436\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u0447\u0442\u043e \u0438 \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0442\u043e\u0433\u043e, \u0447\u0442\u043e Thread.Sleep() \u0432\u0441\u0442\u0430\u0432\u0438\u043b \u043d\u0435 \u0432 \u0441\u0430\u043c\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0430 \u043f\u0435\u0440\u0435\u0434 \u0435\u0451 \u0432\u044b\u0437\u043e\u0432\u043e\u043c. \u042d\u0442\u043e \u0432\u0440\u044f\u0434 \u043b\u0438 \u043c\u043e\u0433\u043b\u043e \u043a\u0430\u043a-\u043b\u0438\u0431\u043e \u043f\u043e\u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u0441\u0443\u0442\u044c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e, \u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u043b\u043e \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e: unsafe-\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u044f\u0432\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u043f\u0435\u0440\u0432\u043e\u0439.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041c\u0435\u0441\u0442\u043e \u0432\u0441\u0442\u0430\u0432\u043a\u0438 Thread.Sleep()<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cs\">      private static bool CompareArraysWithUnsafeMethod()       {          var result = true;          for (int i = 0; i &lt; CountArrays; i++)             for (int j = 0; j &lt; CountArrays; j++)             {                Thread.Sleep( 60 * 1000 );                var tmp = UnsafeCompare(s_arrays[i], s_arrays[j]); <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0418\u043d\u0442\u0435\u0440\u0435\u0441 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0432\u0430\u044f \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0442.\u0435. \u0434\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0432\u044b\u0437\u043e\u0432\u0430 UnsafeCompare(). \u041e\u043d\u0430, \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 \u043f\u0435\u0440\u0432\u0430\u044f, \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u043b\u044e\u0431\u043e\u0435 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u043d\u0430 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0432 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043c\u0430\u0441\u0441\u0438\u0432\u0430. \u042f \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u043d\u0443\u043b \u044d\u0442\u043e \u0432 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0435.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041c\u0435\u0441\u0442\u043e \u0432\u0441\u0442\u0430\u0432\u043a\u0438 Thread.Sleep()<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>;Address   Hex dump          Command                                 Comments 001B0B88    55              push    ebp                             ; \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u043b\u043e\u0433 001B0B89    8BEC            mov     ebp, esp                          001B0B8B    57              push    edi                              001B0B8C    56              push    esi                              001B0B8D    53              push    ebx                                                                                                   001B0B8E    BF 01000000     mov     edi, 1                          ; result = true;                                                                      001B0B93    33DB            xor     ebx, ebx                        ; for (int i = 0; 001B0B95    33F6            xor     esi, esi                        ; for (int j = 0;                                                                      001B0B97    B9 60EA0000     mov     ecx, 0EA60                      ; Thread.Sleep( 60 * 1000 ); 001B0B9C    E8 0CFBC161     call    clr.ThreadNative::Sleep                                                                               001B0BA1    8B15 A8337A03   mov     edx, [s_arrays]                 ; EDX  &lt;-- s_arrays 001B0BA7    3B5A 04         cmp     ebx, [edx+4]                    ; Compare(s_arrays.Length, \u043f\u0435\u0440\u0432\u044b\u0439 \u0438\u043d\u0434\u0435\u043a\u0441) (1) !!! 001B0BAA    73 31           jae     short stub_CLR.JIT_RngChkFail                                                                         001B0BAC    8B4C9A 0C       mov     ecx, [ebx*4+edx+0C]             ; ECX &lt;-- s_arrays[i]                                                                      001B0BB0    3B72 04         cmp     esi, [edx+4]                    ; Compare(s_arrays.Length, \u0432\u0442\u043e\u0440\u043e\u0439 \u0438\u043d\u0434\u0435\u043a\u0441) (2) !!! 001B0BB3    73 28           jae     short stub_CLR.JIT_RngChkFail                                                                         001B0BB5    8B54B2 0C       mov     edx, [esi*4+edx+0C]             ; EDX &lt;-- s_arrays[j] 001B0BB9    FF15 F0381400   call    near UnsafeCompare\t\t\t    <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0438 \u043d\u0430 \u043e\u0434\u0438\u043d \u044d\u043a\u0440\u0430\u043d \u043d\u0435 \u043f\u043e\u043c\u0435\u0449\u0430\u043b\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043d\u0435 \u0441\u0442\u0430\u043b \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u043e\u043a\u043d\u0430 \u0434\u0435\u0431\u0430\u0433\u0435\u0440\u0430. \u0422\u0430\u043a \u043a\u0430\u043a \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0446\u0435\u043b\u044c\u043d\u044b\u0439 \u043b\u0438\u0441\u0442\u0438\u043d\u0433 \u0447\u0438\u0442\u0430\u0442\u044c \u0443\u0442\u043e\u043c\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0438 \u043d\u0435\u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0438\u0432\u043d\u043e, \u0442\u043e \u0437\u0434\u0435\u0441\u044c \u044f \u043f\u0440\u0438\u0432\u043e\u0436\u0443 \u0435\u0433\u043e \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0451\u043d\u043d\u044b\u043c\u0438 \u043a\u0443\u0441\u043a\u0430\u043c\u0438, \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0430\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u0443\u0441\u043e\u043a \u043a\u0440\u0430\u0442\u043a\u0438\u043c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u043c.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">UnsafeCompare().ParametersChecking<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>;a1 ========&gt; ECX ;a2 ========&gt; EDX  ;Address   Hex dump          Command                Comments 001B0BF8    55              push    ebp            ; \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u043b\u043e\u0433 001B0BF9    8BEC            mov     ebp, esp         001B0BFB    57              push    edi            ; \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0432 \u0441\u0442\u0435\u043a\u0435 \u043d\u0443\u0436\u043d\u043e, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0437\u0430\u0442\u0435\u043c, \u0447\u0442\u043e\u0431\u044b 001B0BFC    56              push    esi            ; \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c 001B0BFD    53              push    ebx            ;                                                     001B0BFE    83EC 0C         sub     esp, 0C        ; \u0432\u0435\u0440\u0448\u0438\u043d\u0430 \u0441\u0442\u0435\u043a\u0430 \u0432\u044b\u0448\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u043d\u0430 3*sizeof(DWORD), \u0442.\u0435. \u0431\u0443\u0434\u0435\u0442 3 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445                                                     001B0C01    33C0            xor     eax, eax       ;                      (!) 001B0C03    8945 F0         mov     [ebp-10], eax  ; var1 &lt;-- 0           (!) 001B0C06    8945 EC         mov     [ebp-14], eax  ; var2 &lt;-- 0           (!)                                                     001B0C09    85C9            test    ecx, ecx       ; Compare(a1, null) 001B0C0B    74 0C           je      short return1                                                      001B0C0D    85D2            test    edx, edx       ; Compare(a2, null) 001B0C0F    74 08           je      short return1                                                      001B0C11    8B41 04         mov     eax, [ecx+4]   ; eax &lt;-- a1.Length 001B0C14    3B42 04         cmp     eax, [edx+4]   ; Compare(eax, a2.Length) 001B0C17    74 0A           je      short argsIsValid   return1: 001B0C19    33C0            xor     eax, eax       ; result &lt;-- 0 001B0C1B    8D65 F4         lea     esp, [ebp-0C]    001B0C1E    5B              pop     ebx             001B0C1F    5E              pop     esi             001B0C20    5F              pop     edi              001B0C21    5D              pop     ebp             001B0C22    C3              ret  argsIsValid: ; \u0427\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u043e\u043f\u0443\u0449\u0435\u043d\u0430 <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0412 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0441\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435\u043c \u0432\u044b\u0437\u043e\u0432\u0430 fastcall, \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 .NET Framework [7][8], \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0445 ecx \u0438 edx \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u0439 \u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u043c \u0441\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e. \u0412 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u043c \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0435 \u0445\u043e\u0440\u043e\u0448\u043e \u0432\u0438\u0434\u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u043e\u043d \u043f\u043e\u0447\u0442\u0438 \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043a\u043e\u0434\u0443 \u043d\u0430 C#  <\/p>\n<pre><code class=\"cs\">         if (a1 == null || a2 == null || a1.Length != a2.Length)             return false; <\/code><\/pre>\n<p>  \u041e\u0434\u043d\u0430\u043a\u043e, \u043e\u0441\u043e\u0431\u043e\u0433\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0437\u0430\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u044e\u0442 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438: \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0445 \u043d\u0435\u044f\u0441\u043d\u043e, \u0438 \u043e\u043d\u0438 \u0437\u0430\u043f\u0443\u0442\u044b\u0432\u0430\u044e\u0442. \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0438 \u0437\u0430\u0447\u0435\u043c \u043e\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0443\u0436\u043d\u043e, \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442, \u0432 \u0445\u043e\u0434\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0443\u044e unsafe-\u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043d\u0430 C#, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435 fixed \u0438 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044e, \u0438 \u043f\u0440\u043e\u0432\u0451\u043b \u0441 \u043d\u0435\u0439 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f.  <\/p>\n<pre><code class=\"cs\">      private static unsafe int func1(byte[] param1)       {          fixed (byte* p = param1)          {             return *p;          }       } <\/code><\/pre>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0414\u0438\u0437\u0430\u0441\u043c \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0435\u0439 Unsafe \u0444\u0443\u043d\u043a\u0446\u0438\u0438<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code> ;param1 ========&gt; ECX  Address   Hex dump          Command                                  Comments $ ==&gt;       55              push    ebp                              ; \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u043b\u043e\u0433 $+1         8BEC            mov     ebp, esp  $+3         50              push    eax                              ;                                 (!) $+4         33C0            xor     eax, eax                         ;                                 (!) $+6         8945 FC         mov     [ebp-4], eax                     ; var1 &lt;-- 0                      (!)  $+9         85C9            test    ecx, ecx                         ; Compare(param1, null) $+B         74 06           je      short param_is_null  $+D         8379 04 00      cmp     dword ptr [ecx+4], 0             ; Compare(param1.Length, 0) $+11        75 07           jne     short not_zero_len  param_is_null: $+13        33D2            xor     edx, edx $+15        8955 FC         mov     [ebp-4], edx                    ; var1 &lt;-- 0 $+18        EB 0C           jmp     short ret_1  not_zero_len: $+1A        8379 04 00      cmp     dword ptr [ecx+4], 0 $+1E        76 10           jbe     short call.JIT_RngChkFail  $+20        8D49 08         lea     ecx, [ecx+8]                    ; ecx &lt;-- param1.BufferPointer $+23        894D FC         mov     [ebp-4], ecx                    ; var1 &lt;-- ecx  ret_1: $+26        8B45 FC         mov     eax, [ebp-4]                    ; eax &lt;-- var1 $+29        0FB600          movzx   eax, byte ptr [eax]             ; eax &lt;-- *eax  $+2C        8BE5            mov     esp, ebp                        ; \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u044d\u043f\u0438\u043b\u043e\u0433 $+2E        5D              pop     ebp  $+2F        C3              ret  call.JIT_RngChkFail: $+30        E8 B3BDC861     call    clr.JIT_RngChkFail $+35        CC              int3\t   <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0418\u0437 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u0433\u043e \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c, \u0447\u0442\u043e \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 JIT-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0432 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0438 fixed \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u0442\u0435\u043a, \u0432\u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u042d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u0442\u043e\u0433\u043e \u0444\u0430\u043a\u0442\u0430, \u0447\u0442\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440 eax \u0431\u044b\u043b \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d \u0432 \u0441\u0442\u0435\u043a\u0435, \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0438, \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0431\u044b\u043b \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u043c \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u0434\u043b\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 (\u0434\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f 0x26 \u043e\u0442 \u043d\u0430\u0447\u0430\u043b\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438), \u043d\u043e \u043f\u043e\u0434 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u044b\u043b\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0430 \u0441\u0442\u0435\u043a\u043e\u0432\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043f\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e [ebp-4] (\u043d\u0430\u0437\u043e\u0432\u0451\u043c \u0435\u0451 var1). \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0443\u043b\u0451\u043c, \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043f\u043e\u0442\u043e\u043c \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u0442\u0438\u0440\u0430\u0435\u0442\u0441\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e 0x15 \u0432 var1 \u0441\u043d\u043e\u0432\u0430 \u0437\u0430\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043d\u043e\u043b\u044c, \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0442\u0430\u043c \u043a \u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u043c\u0435\u043d\u0442\u0443 \u0443\u0436\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043d\u043e\u043b\u044c.<\/p>\n<p>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c, \u0447\u0442\u043e \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u043e\u0441\u043e\u0431\u043e\u0433\u043e \u0441\u043c\u044b\u0441\u043b\u0430 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0435 UnsafeCompare.CPU Disasm.ParametersChecking \u043d\u0435 \u043d\u0435\u0441\u0443\u0442, \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043f\u043e\u0431\u043e\u0447\u043d\u044b\u0439 \u044d\u0444\u0444\u0435\u043a\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438. \u0422\u0430\u043a\u0436\u0435 \u0438\u0437 \u0432\u044b\u0448\u0435\u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u0433\u043e \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u043c, \u0447\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0432 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0438 fixed \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0442\u0440\u0438 \u044d\u0442\u0430\u043f\u0430: \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u0430\u0441\u0441\u0438\u0432 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u043e null, \u043f\u043e\u0442\u043e\u043c \u0435\u0433\u043e \u0434\u043b\u0438\u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u043e \u043d\u0443\u043b\u044e (\u043a\u043e\u043c\u0430\u043d\u0434\u0430 jne \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e ZF), \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0442\u0435\u043c \u043d\u0430 \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u043e \u043d\u0443\u043b\u044e \u0438 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f (jbe \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0438 ZF \u0438 CF). \u0421 \u043c\u043e\u0435\u0439 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0432\u0435\u0441\u044c\u043c\u0430 \u0441\u0442\u0440\u0430\u043d\u043d\u043e, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0434\u0432\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043d\u0435 \u0431\u044b\u043b\u0438 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u044b \u0432 \u043e\u0434\u043d\u043e, \u0438 \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0440\u0430\u043d\u043d\u043e, \u0447\u0442\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0430 cmp \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0434\u0432\u0430\u0436\u0434\u044b, \u0432\u0435\u0434\u044c \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0435 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u0444\u043b\u0430\u0433\u0438. \u041a\u0440\u043e\u043c\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u043e\u0447\u0435\u0433\u043e, \u044f \u0438\u0437\u0441\u043a\u0440\u0435\u043d\u043d\u0435 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u0435\u043d \u0442\u0435\u043c \u0438\u0437 \u0432\u0430\u0441, \u043a\u0442\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043b \u044d\u0442\u0443 \u0441\u0442\u0440\u043e\u043a\u0443, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u044f \u043d\u0435 \u0437\u0440\u044f \u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f, \u0438 \u043c\u043e\u0438 \u0440\u0430\u0441\u043a\u043e\u043f\u043a\u0438 \u0432 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0445 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0430\u0445 \u0431\u044b\u043b\u0438 \u043d\u0435 \u043d\u0430\u043f\u0440\u0430\u0441\u043d\u044b.<\/p>\n<p>  \u041f\u0440\u043e\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0439 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u043a\u043e\u0434\u0430.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435 fixed \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 CompareArraysWithUnsafeMethod()<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>argsIsValid:  001B0C23    8379 04 00      cmp     dword ptr [ecx+4], 0       ; Compare(a1.Length, 0) \u044d\u0442\u043e \u043f\u0435\u0440\u0432\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0434\u043b\u0438\u043d\u044b \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430 001B0C27    75 07           jne     short a1Len_NonZero        ; \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u043e  001B0C29    33C0            xor     eax, eax 001B0C2B    8945 F0         mov     [ebp-10], eax              ; var1 &lt;-- 0 001B0C2E    EB 10           jmp     short a1Len_Zero   a1Len_NonZero: 001B0C30    8379 04 00      cmp     dword ptr [ecx+4], 0       ; Compare(a1.Length, 0) \u0432\u0442\u043e\u0440\u0430\u044f (\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f) \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0434\u043b\u0438\u043d\u044b \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430 001B0C34    0F86 B5000000   jbe     call.JIT_RngChkFail        ; \u0435\u0441\u043b\u0438 \u0440\u0430\u0432\u043d\u043e \u0438\u043b\u0438 \u043c\u0435\u043d\u044c\u0448\u0435  001B0C3A    8D41 08         lea     eax, [ecx+8]               ; eax &lt;-- a1.BufferPointer 001B0C3D    8945 F0         mov     [ebp-10], eax              ; var1 &lt;-- eax   a1Len_Zero: 001B0C40    837A 04 00      cmp     dword ptr [edx+4], 0       ; Compare(a2.Length, 0) \u044d\u0442\u043e \u043f\u0435\u0440\u0432\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0434\u043b\u0438\u043d\u044b \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430 001B0C44    75 07           jne     short a2Len_NonZero        ; \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u043e  001B0C46    33D2            xor     edx, edx 001B0C48    8955 EC         mov     [ebp-14], edx              ; var2 &lt;-- 0 001B0C4B    EB 10           jmp     short part3   a2Len_NonZero: 001B0C4D    837A 04 00      cmp     dword ptr [edx+4], 0       ; Compare(a2.Length, 0) \u0432\u0442\u043e\u0440\u0430\u044f (\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f) \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0434\u043b\u0438\u043d\u044b \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430 001B0C51    0F86 98000000   jbe     call.JIT_RngChkFail        ; \u0435\u0441\u043b\u0438 \u0440\u0430\u0432\u043d\u043e \u0438\u043b\u0438 \u043c\u0435\u043d\u044c\u0448\u0435  001B0C57    8D52 08         lea     edx, [edx+8]               ; edx &lt;-- a2.BufferPointer 001B0C5A    8955 EC         mov     [ebp-14], edx              ; var2 &lt;-- edx <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u0441\u044e\u0440\u043f\u0440\u0438\u0437\u043e\u0432 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \u043f\u0440\u0435\u043f\u043e\u0434\u043d\u0451\u0441, \u0442.\u0435. \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0434\u0430\u0451\u0442 \u043b\u0435\u0433\u043a\u043e \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0432 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0438 fixed, \u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0432 \u0441\u0442\u0435\u043a\u0435.<br \/>  \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432\u043d\u0443\u0442\u0440\u0438 \u0431\u043b\u043e\u043a\u0430 fixed:  <\/p>\n<pre><code>part3: ; ECX              &lt;======= a1 ; EDX              &lt;======= a2.BufferPointer ; var1             &lt;======= a1.BufferPointer ; var2             &lt;======= a2.BufferPointer 001B0C5D    8B45 F0         mov     eax, [ebp-10]              ; eax &lt;-- var1 001B0C60    8BF0            mov     esi, eax                   ; esi &lt;-- eax  001B0C62    8B45 EC         mov     eax, [ebp-14]              ; eax &lt;-- var2 001B0C65    8BF8            mov     edi, eax                   ; edi &lt;-- eax  001B0C67    8B41 04         mov     eax, [ecx+4]               ; eax &lt;-- a1.Length 001B0C6A    8945 E8         mov     [ebp-18], eax              ; var3 &lt;-- eax <\/code><\/pre>\n<p>  \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432\u043d\u0443\u0442\u0440\u0438 \u0431\u043b\u043e\u043a\u0430 fixed \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u0430 \u0442\u0435\u043c, \u0447\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u043f\u0440\u0438\u043d\u0446\u0438\u043f, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 JIT-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043a\u043e\u0434. \u0417\u0434\u0435\u0441\u044c \u0445\u043e\u0440\u043e\u0448\u043e \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0440\u044f\u043c\u043e\u0439 \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0438\u0437 \u0441\u0442\u0435\u043a\u043e\u0432\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432 \u0438\u043d\u0434\u0435\u043a\u0441\u043d\u044b\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440-\u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440. \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c, \u0432 \u044d\u0442\u043e\u043c \u0438 \u0435\u0441\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u0442\u0430\u0439\u043d\u044b\u0439 \u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u043c\u044b\u0441\u043b, \u043d\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u044d\u0442\u043e (\u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0430 \u0432 eax) \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u0430\u043a \u043b\u0438\u0448\u043d\u0435\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0426\u0438\u043a\u043b \u043f\u043e 8 \u0431\u0430\u0439\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>001B0C6D    33C9            xor     ecx, ecx                   ; \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u0446\u0438\u043a\u043b\u0430 &lt;-- 0  001B0C6F    8BD8            mov     ebx, eax                   ; ebx &lt;-- a1.Length 001B0C71    85DB            test    ebx, ebx 001B0C73    79 03           jns     short ebx_greaterZero 001B0C75    83C3 07         add     ebx, 7                     ; \u0435\u0441\u043b\u0438 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043f\u0440\u0438\u0431\u0430\u0432\u043b\u044f\u0435\u043c 7 ebx_greaterZero: 001B0C78    C1FB 03         sar     ebx, 3                     ; ebx &lt;-- a1.Length \/ 8  001B0C7B    85DB            test    ebx, ebx 001B0C7D    7E 1D           jle     short fourBytesComparing   for8_body: 001B0C7F    8B06            mov     eax, [esi] 001B0C81    8B56 04         mov     edx, [esi+4]  001B0C84    3B57 04         cmp     edx, [edi+4] 001B0C87    75 04           jne     short setResult_jumpReturn  001B0C89    3B07            cmp     eax, [edi] 001B0C8B    74 04           je      short for8_increment setResult_jumpReturn: 001B0C8D    33C0            xor     eax, eax                   ; result &lt;-- 0 001B0C8F    EB 56           jmp     short return2              ; goto return   for8_increment: 001B0C91    41              inc     ecx 001B0C92    83C6 08         add     esi, 8 001B0C95    83C7 08         add     edi, 8 for8_expression: 001B0C98    3BD9            cmp     ebx, ecx 001B0C9A  ^ 7F E3           jg      short for8_body <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0446\u0438\u043a\u043b\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u0446\u0438\u043a\u043b\u0430 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0432 ecx, \u0433\u0440\u0430\u043d\u0438\u0447\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0432 ebx, \u0447\u0442\u043e \u0442\u043e\u0436\u0435 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e. \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0434\u0435\u0441\u044c \u043b\u0438\u0448\u044c \u0442\u043e, \u0447\u0442\u043e \u043f\u0435\u0440\u0432\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0446\u0438\u043a\u043b\u0430 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0441\u0440\u0430\u0437\u0443 \u0437\u0430 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0435 \u0442\u0430\u043a, \u043a\u0430\u043a \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0446\u0438\u043a\u043b\u0430. \u0422\u0430\u043a\u0436\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0447\u0443\u0434\u0435\u0441 \u043d\u0435 \u0431\u044b\u0432\u0430\u0435\u0442, \u0438 \u043f\u0440\u0435\u0444\u0438\u043a\u0441 REX \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043d\u0438 \u0432 Protected Mode, \u043d\u0438 \u0432 Compatible Mode, \u0442.\u0435. \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 QWORD-\u0431\u043b\u043e\u043a\u0430\u043c\u0438 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0431\u043b\u043e\u043a\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c DWORD. \u041e\u0434\u043d\u0430\u043a\u043e \u0438\u0437 \u043a\u043e\u0434\u0430 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0439 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b eax, edx \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e\u0442\u0441\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0447\u0430\u0441\u0442\u0438 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u0442.\u0435. JIT-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0441\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u0434, \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c\u0443 \u043a\u043e\u0434\u0443.<\/p>\n<p>  \u0411\u0440\u043e\u0441\u0430\u0435\u0442\u0441\u044f \u0432 \u0433\u043b\u0430\u0437\u0430 \u0442\u043e, \u0447\u0442\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \u0441\u0442\u0430\u043b \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u0443\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e CMPSD, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e, \u0435\u0451 \u00ab\u043a\u043e\u0440\u043e\u0442\u043a\u0443\u044e\u00bb \u0444\u043e\u0440\u043c\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 DWORD-\u0431\u043b\u043e\u043a\u043e\u0432, \u0440\u0430\u0437\u043c\u0435\u0449\u0451\u043d\u043d\u044b\u0445 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0430\u043c esi \u0438 edi, \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0444\u043b\u0430\u0433\u0438. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0440\u0430\u0437\u043c\u0435\u0440 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0431\u044b\u043b \u0431\u044b \u043c\u0435\u043d\u044c\u0448\u0435 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437: \u043a\u043e\u043c\u0430\u043d\u0434\u0430 mov \u0437\u0434\u0435\u0441\u044c \u0438\u043c\u0435\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 2 \u0438 3 \u0431\u0430\u0439\u0442\u0430, \u043a\u043e\u043c\u0430\u043d\u0434\u0430 cmp \u2013 2 \u0438 3 \u0431\u0430\u0439\u0442\u0430, \u0430 \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u0430\u0436\u0434\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b CMPSD (\u0432 \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0439 \u0444\u043e\u0440\u043c\u0435) \u0431\u044b\u043b \u0431\u044b \u0432\u0441\u0435\u0433\u043e 1 \u0431\u0430\u0439\u0442, \u0442.\u0435. \u0434\u043b\u044f \u0434\u0432\u0443\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 \u0432\u0441\u0435\u0433\u043e 2 \u0431\u0430\u0439\u0442\u0430. \u042d\u0442\u043e \u043d\u0430\u0432\u043e\u0434\u0438\u0442 \u043d\u0430 \u043c\u044b\u0441\u043b\u0438 \u043e \u043d\u0435\u0436\u0435\u043b\u0430\u043d\u0438\u0438 JIT-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434.<\/p>\n<p>  \u0418\u0437 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0445 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u043e\u0432 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043f\u0430\u0440\u0430 \u043a\u043e\u043c\u0430\u043d\u0434, \u043f\u0435\u0440\u0432\u0430\u044f \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u2013 \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0430 \u0432 eax, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043d\u0435\u0443\u043a\u043e\u0441\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e.<\/p>\n<p>  \u041f\u043e\u043f\u044b\u0442\u043a\u0430 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0431\u043b\u043e\u043a\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c DWORD, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0439 \u043e\u0431\u044a\u0451\u043c \u043e\u0441\u0442\u0430\u043b\u0441\u044f:  <\/p>\n<pre><code>fourBytesComparing: 001B0C9C    F745 E8 0400000 test    dword ptr [ebp-18], 00000004    ; ZF &lt;-- (var3 & 4) == 0 001B0CA3    74 10           je      short length_lowerThenFour  001B0CA5    8B06            mov     eax, [esi]  001B0CA7    3B07            cmp     eax, [edi] 001B0CA9    74 04           je      short dwords_equals              ; \u0435\u0441\u043b\u0438 \u0431\u043b\u043e\u043a\u0438 \u0440\u0430\u0432\u043d\u044b, \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043a \u0438\u043d\u043a\u0440\u0438\u043c\u0435\u043d\u0442\u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432  001B0CAB    33C0            xor     eax, eax 001B0CAD    EB 38           jmp     short return2  dwords_equals: 001B0CAF    83C6 04         add     esi, 4 001B0CB2    83C7 04         add     edi, 4 <\/code><\/pre>\n<p>  \u041f\u043e\u043f\u044b\u0442\u043a\u0430 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0431\u043b\u043e\u043a\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c WORD, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0439 \u043e\u0431\u044a\u0451\u043c \u043e\u0441\u0442\u0430\u043b\u0441\u044f:  <\/p>\n<pre><code>length_lowerThenFour: 001B0CB5    F745 E8 0200000 test    dword ptr [ebp-18], 00000002    ; ZF &lt;-- (var3 & 2) == 0 001B0CBC    74 10           je      short length_lowerThenTwo  001B0CBE    0FBF06          movsx   eax, word ptr [esi]  001B0CC1    66:3B07         cmp     ax, [edi] 001B0CC4    74 04           je      short words_equals              ; \u0435\u0441\u043b\u0438 \u0431\u043b\u043e\u043a\u0438 \u0440\u0430\u0432\u043d\u044b, \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043a \u0438\u043d\u043a\u0440\u0438\u043c\u0435\u043d\u0442\u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432  001B0CC6    33C0            xor     eax, eax 001B0CC8    EB 1D           jmp     short return2  words_equals: 001B0CCA    46              inc     esi 001B0CCB    46              inc     esi 001B0CCC    47              inc     edi 001B0CCD    47              inc     edi <\/code><\/pre>\n<p>  \u041f\u043e\u043f\u044b\u0442\u043a\u0430 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0431\u043b\u043e\u043a\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c BYTE, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0439 \u043e\u0431\u044a\u0451\u043c \u043e\u0441\u0442\u0430\u043b\u0441\u044f:  <\/p>\n<pre><code>length_lowerThenTwo: 001B0CCE    F745 E8 0100000 test    dword ptr [ebp-18], 00000001   ; ZF &lt;-- (var3 & 1) == 0 001B0CD5    74 0B           je      short 001B0CE2  001B0CD7    0FB606          movzx   eax, byte ptr [esi]  001B0CDA    3A07            cmp     al, [edi] 001B0CDC    74 04           je      short 001B0CE2                 ; \u0435\u0441\u043b\u0438 \u0431\u043b\u043e\u043a\u0438 \u0440\u0430\u0432\u043d\u044b, \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043a \u0438\u043d\u043a\u0440\u0438\u043c\u0435\u043d\u0442\u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432  001B0CDE    33C0            xor     eax, eax 001B0CE0    EB 05           jmp     short return2  001B0CE2    B8 01000000     mov     eax, 1 <\/code><\/pre>\n<p>  \u0412\u043e\u0437\u0432\u0440\u0430\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0438 \u0432\u044b\u0431\u0440\u043e\u0441 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f:  <\/p>\n<pre><code>return2: 001B0CE7    8D65 F4         lea     esp, [ebp-0C] 001B0CEA    5B              pop     ebx 001B0CEB    5E              pop     esi 001B0CEC    5F              pop     edi 001B0CED    5D              pop     ebp 001B0CEE    C3              ret  JIT_RngChkFail: 001B0CEF    E8 C4B1DB61     call    clr.JIT_RngChkFail 001B0CF4    CC              int3 <\/code><\/pre>\n<h4>\u0410\u043d\u0430\u043b\u0438\u0437 CRT \u0444\u0443\u043d\u043a\u0446\u0438\u0438 memcmp()<\/h4>\n<p>  \u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441 \u0435\u0449\u0451 \u0438 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442 \u0434\u0432\u0430 \u0431\u0443\u0444\u0435\u0440\u0430, \u0430 \u0432\u044b\u044f\u0441\u043d\u044f\u0435\u0442 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442, \u043e\u043d\u0430 \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u0447\u0435\u043c \u0442\u0435, \u0447\u0442\u043e \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u0440\u0430\u043d\u0435\u0435.<\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u043f\u043e\u0434\u0446\u0435\u043f\u043b\u0435\u043d\u0438\u044f \u0434\u0435\u0431\u0430\u0433\u0435\u0440\u043e\u043c \u044f \u0432\u044b\u044f\u0441\u043d\u0438\u043b, \u0447\u0442\u043e \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043f\u043e \u0431\u0430\u0437\u043e\u0432\u043e\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0443 0x76C20000 \u0431\u044b\u043b\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u0430 C:\\Windows\\SysWOW64\\msvcrt.dll \u0432\u0435\u0440\u0441\u0438\u0438 7.0.7601.17744.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/files.rsdn.ru\/67254\/msvcrt_module.png\" alt=\"\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u043e\u043a\u043e\u0448\u043a\u0438 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430\"\/><\/p>\n<p>  \u042d\u0442\u043e \u0432\u0430\u0436\u043d\u043e\u0435 \u0443\u0442\u043e\u0447\u043d\u0435\u043d\u0438\u0435, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043a\u043e\u0434 \u0440\u0430\u0437\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u043c\u043e\u0436\u0435\u0442 \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f, \u0442.\u043a. \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u043e\u043f\u0446\u0438\u044f\u043c\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430, \u0438 \u0434\u0430\u0436\u0435 \u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430\u043c\u0438.<\/p>\n<p>  \u041f\u0435\u0440\u0432\u044b\u0439 \u0436\u0435 \u0432\u0437\u0433\u043b\u044f\u0434 \u043d\u0430 \u043f\u0440\u0435\u043f\u0430\u0440\u0438\u0440\u0443\u0435\u043c\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043c\u0435\u043d\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043c\u0443\u0442\u0438\u043b: \u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043f\u0435\u0440\u0435\u0434 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c \u043f\u0440\u043e\u043b\u043e\u0433\u043e\u043c, \u0432 \u0441\u0430\u043c\u043e\u043c \u043d\u0430\u0447\u0430\u043b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u043b\u0430\u0441\u044c \u0441\u0442\u0440\u0430\u043d\u043d\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f, \u0430 \u0432\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u0440\u0430\u0436\u0430\u044e\u0442 \u0432\u043e\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435. \u0411\u0440\u043e\u0441\u0438\u043b\u043e\u0441\u044c \u0432 \u0433\u043b\u0430\u0437\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u00ab\u0434\u043b\u0438\u043d\u043d\u044b\u0445\u00bb \u0434\u0436\u0430\u043c\u043f\u043e\u0432, \u043a \u0442\u043e\u043c\u0443 \u0436\u0435 switch \u0441 32 case\u2019\u0430\u043c\u0438 \u0443\u0441\u0442\u0440\u0430\u0448\u0430\u0435\u0442.<\/p>\n<p>  \u0421\u0442\u0440\u0430\u043d\u043d\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f:  <\/p>\n<pre><code>76C37975   .  8BFF          mov     edi, edi                                   ; &lt;--(!) \u0417\u0434\u0435\u0441\u044c \u043d\u0430\u0447\u0430\u043b\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 INT msvcrt.memcmp(buf1,buf2,count) 76C37977   .  55            push    ebp 76C37978   .  8BEC          mov     ebp, esp <\/code><\/pre>\n<p>  \u041e\u043d\u0430 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0441\u0430\u043c \u0432 \u0441\u0435\u0431\u044f, \u043d\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u044f \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0444\u043b\u0430\u0433\u043e\u0432, \u0442.\u0435. \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0435\u0451 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043d\u0443\u043b\u0435\u0432\u043e\u0439, \u043f\u0440\u044f\u043c\u043e \u043a\u0430\u043a nop, \u043d\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0432 2 \u0431\u0430\u0439\u0442\u0430. \u041f\u0440\u043e\u043c\u043e\u0442\u0430\u0432 \u043a\u043e\u0434 \u0432 \u043e\u043a\u043d\u0435 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430, \u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b, \u0447\u0442\u043e \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0434\u0440\u0443\u0433\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0431\u043b\u043e\u0433\u0443 \u0420\u044d\u0439\u043c\u043e\u043d\u0434\u0430 \u0427\u0435\u043d\u0430 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \u043d\u0430\u0448\u043b\u043e\u0441\u044c \u0431\u044b\u0441\u0442\u0440\u043e. \u042d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0430\u043d\u0430\u043b\u043e\u0433 nop.  <\/p>\n<blockquote><p>It&#8217;s a hot-patch point.<br \/>  The MOV EDI, EDI instruction is a two-byte NOP, which is just enough space to patch in a jump instruction so that the function can be updated on the fly. The intention is that the MOV EDI, EDI instruction will be replaced with a two-byte JMP $-5 instruction to redirect control to five bytes of patch space that comes immediately before the start of the function. Five bytes is enough for a full jump instruction, which can send control to the replacement function installed somewhere else in the address space.<br \/>  <a href=\"http:\/\/blogs.msdn.com\/b\/oldnewthing\/archive\/2011\/09\/21\/10214405.aspx\">blogs.msdn.com\/b\/oldnewthing\/archive\/2011\/09\/21\/10214405.aspx<\/a>  <\/p><\/blockquote>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0414\u043b\u0438\u043d\u043d\u044b\u0435 \u0434\u0436\u0430\u043c\u043f\u044b \u0438 \u043e\u0447\u0435\u043d\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0439 switch<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>Address   Hex dump              Command                                               Comments 75A9797C   .  8B7D 10           mov     edi, [ebp+10]                                 ; edi &lt;-- length 75A9797F   .  8BC7              mov     eax, edi 75A97981   .  83E8 00           sub     eax, 0                                        ; 75A97984   .  0F84 E7070100     je      msvcrt.zeroResult_GoReturn                     ; (length == 0)=&gt; {result &lt;-- 0, goto return;} (!) \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 ; \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u043e\u043f\u0443\u0449\u0435\u043d\u0430 ; \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u043e\u043f\u0443\u0449\u0435\u043d\u0430 75A979BC   .  83FF 1F           cmp     edi, 1F                                       ; Switch (cases 1..1F, 32. exits) 75A979BF   .  77 5B             ja      short msvcrt.75A97A1C 75A979C1   .  FF24BD 1F8AA975   jmp     near [edi*4+msvcrt.75A98A1F]                  ; (!) \u0414\u0436\u0430\u043c\u043f \u043d\u0430 \u0430\u0434\u0440\u0435\u0441 \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 (!) \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 ; \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u043e\u043f\u0443\u0449\u0435\u043d\u0430 ; \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u043e\u043f\u0443\u0449\u0435\u043d\u0430 75A98A1F   .  1C7AA975          dd      msvcrt.75A97A1C                               ; (00) \u041d\u0430\u0447\u0430\u043b\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432, \u0437\u0434\u0435\u0441\u044c jump \u043d\u0430 \u0432\u044b\u0445\u043e\u0434 \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 75A98A23   .  E88AA975          dd      msvcrt.75A98AE8                               ; (01) 75A98A27   .  CA8AA975          dd      msvcrt.75A98ACA                               ; (02) 75A98A2B   .  8C8BA975          dd      msvcrt.75A98B8C                               ; (03) 75A98A2F   .  0A7AA975          dd      msvcrt.75A97A0A                               ; (04) 75A98A33   .  088FA975          dd      msvcrt.75A98F08                               ; (05) 75A98A37   .  B88AA975          dd      msvcrt.75A98AB8                               ; (06) 75A98A3B   .  758BA975          dd      msvcrt.75A98B75                               ; (07) 75A98A3F   .  F479A975          dd      msvcrt.75A979F4                               ; (08) 75A98A43   .  238FA975          dd      msvcrt.75A98F23                               ; (09) 75A98A47   .  9F8AA975          dd      msvcrt.75A98A9F                               ; (0A) 75A98A4B   .  A18BA975          dd      msvcrt.75A98BA1                               ; (0B) 75A98A4F   .  DE79A975          dd      msvcrt.75A979DE                               ; (0C) 75A98A53   .  3A8FA975          dd      msvcrt.75A98F3A                               ; (0D) 75A98A57   .  FD8AA975          dd      msvcrt.75A98AFD                               ; (0E) 75A98A5B   .  ED8EA975          dd      msvcrt.75A98EED                               ; (0F) 75A98A5F   .  C879A975          dd      msvcrt.75A979C8                               ; (10) 75A98A63   .  518FA975          dd      msvcrt.75A98F51                               ; (11) 75A98A67   .  BA8EA975          dd      msvcrt.75A98EBA                               ; (12) 75A98A6B   .  6A98A975          dd      msvcrt.75A9986A                               ; (13) 75A98A6F   .  8990A975          dd      msvcrt.75A99089                               ; (14) 75A98A73   .  CD98A975          dd      msvcrt.75A998CD                               ; (15) 75A98A77   .  D58EA975          dd      msvcrt.75A98ED5                               ; (16) 75A98A7B   .  8598A975          dd      msvcrt.75A99885                               ; (17) 75A98A7F   .  1899A975          dd      msvcrt.75A99918                               ; (18) 75A98A83   .  E898A975          dd      msvcrt.75A998E8                               ; (19) 75A98A87   .  698FA975          dd      msvcrt.75A98F69                               ; (1A) 75A98A8B   .  9D98A975          dd      msvcrt.75A9989D                               ; (1B) 75A98A8F   .  3399A975          dd      msvcrt.75A99933                               ; (1C) 75A98A93   .  0099A975          dd      msvcrt.75A99900                               ; (1D) 75A98A97   .  848FA975          dd      msvcrt.75A98F84                               ; (1E) 75A98A9B   .  B598A975          dd      msvcrt.75A998B5                               ; (1F) \u041e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0412 \u0441\u0432\u044f\u0437\u0438 \u0441 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0442\u0440\u0443\u0434\u043e\u0451\u043c\u043a\u043e\u0441\u0442\u044c\u044e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0432\u0441\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0431\u044b\u043b\u043e \u0440\u0435\u0448\u0435\u043d\u043e \u043d\u0435 \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0451 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e, \u043a \u0442\u043e\u043c\u0443 \u0436\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u0438 \u043b\u0438\u0448\u044c \u0434\u0432\u0435 \u0432\u0435\u0449\u0438:<\/p>\n<ul>\n<li>\u041e\u0446\u0435\u043d\u043a\u0430 \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0445 \u0440\u0430\u0441\u0445\u043e\u0434\u043e\u0432 (overhead) \u043d\u0430 \u00ab\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0439\u00bb \u0432\u044b\u0437\u043e\u0432 (PInvoke)<\/li>\n<li>\u0412\u043d\u0435\u0448\u043d\u044f\u044f \u043e\u0446\u0435\u043d\u043a\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.<\/li>\n<\/ul>\n<h5>\u041e\u0446\u0435\u043d\u043a\u0430 \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0445 \u0440\u0430\u0441\u0445\u043e\u0434\u043e\u0432 \u043d\u0430 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439<\/h5>\n<p>  \u0414\u043b\u044f \u043e\u0446\u0435\u043d\u043a\u0438 \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0445 \u0440\u0430\u0441\u0445\u043e\u0434\u043e\u0432 \u043d\u0430 \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0431\u044b\u043b\u043e \u0440\u0435\u0448\u0435\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0443 \u043a\u043e\u0434\u0430 \u043e\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0434\u043e \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0430\u043c\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0431\u044b\u043b\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0442\u043e\u0447\u043a\u0430 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430, \u0438 \u043f\u043e\u0441\u043b\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0438\u0437 Thread.Sleep() \u043d\u0430\u0447\u0430\u0442\u0430 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0430. \u041e\u0434\u043d\u0430\u043a\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438 \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u044b\u043c: \u043b\u043e\u0433 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438 \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u043c (\u043e\u043a\u043e\u043b\u043e 100 \u0442\u044b\u0441\u044f\u0447 \u0441\u0442\u0440\u043e\u043a), \u0447\u0442\u043e, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u043e \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0431\u044b\u043b\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 DllMain(), \u0442\u0430\u043a\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0430 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c, \u0447\u0442\u043e \u0431\u044b\u043b \u0437\u0430\u0445\u0432\u0430\u0447\u0435\u043d \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043a\u043e\u0434 CLR, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043a\u043e\u0434 JIT-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430. \u0427\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u043e\u0441\u044c, \u044f \u043d\u0435 \u0441\u0442\u0430\u043b \u0432\u044b\u044f\u0441\u043d\u044f\u0442\u044c: \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0430, \u0442.\u043a. \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u044b\u0439 \u043a\u043e\u0434 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043b\u0438\u0448\u044c \u0435\u0434\u0438\u043d\u043e\u0436\u0434\u044b \u0438 \u043d\u0430 \u043e\u0431\u0449\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u0443 \u043f\u043e\u0447\u0442\u0438 \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442. \u0427\u0442\u043e\u0431\u044b \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043a\u043e\u0434, \u044f \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u0437\u043e\u0432\u043e\u043c Thread.Sleep() \u0432\u0441\u0442\u0430\u0432\u0438\u043b \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0432\u044b\u0437\u043e\u0432 memcmp() \u0438 \u0437\u0430\u043d\u043e\u0432\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u0451\u043b \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0443. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0447\u0435\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0430 \u0441\u0442\u0440\u043e\u043a.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/files.rsdn.ru\/67254\/tracing_to_msvcrt.png\" alt=\"\u041e\u043a\u043d\u043e \u043b\u043e\u0433\u0430 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438\"\/><\/p>\n<p>  \u0427\u0430\u0441\u0442\u044c \u043b\u043e\u0433\u0430 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438:  <\/p>\n<pre><code>main  00480AEA                    call    0031C19C                        ESP=0016F368 ; \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u043e\u043f\u0443\u0449\u0435\u043d\u0430 main  clr.628C3B5F                call    near [eax+14]                   ESP=0016F248        ; (1) ; \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u043e\u043f\u0443\u0449\u0435\u043d\u0430 main  00480B87                    mov     eax, [ebp-1C]                   EAX=00313880 main  00480B8A                    mov     eax, [eax+14]                   EAX=0031391C main  00480B8D                    mov     ecx, [eax]                      ECX=75A97975        ; (2) main  00480B8F                    push    dword ptr [ebp+0C]              ESP=0016F328 main  00480B92                    push    dword ptr [ebp+8]               ESP=0016F324 main  00480B95                    push    edi                             ESP=0016F320 main  00480B96                    push    dword ptr [ebp-10]              ESP=0016F31C main  00480B99                    mov     dword ptr [ebp-2C], 0 main  00480BA0                    mov     [ebp-28], esp main  00480BA3                    mov     dword ptr [ebp-24], 480BB0 main  00480BAA                    mov     byte ptr [ebx+8], 0 main  00480BAE                    call    ecx                             ESP=0016F318        ; (3) main  msvcrt.memcmp               mov     edi, edi --------  Logging stopped <\/code><\/pre>\n<p>  \u0418\u0437 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u0433\u043e \u043b\u043e\u0433\u0430 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e, \u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043f\u043e \u043f\u0443\u0442\u0438 \u043a \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043e\u0434\u0438\u043d \u043a\u043e\u0441\u0432\u0435\u043d\u043d\u044b\u0439 \u0432\u044b\u0437\u043e\u0432, \u0430 \u0432\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, CLR \u0434\u043e\u0441\u0442\u0430\u0451\u0442 \u0430\u0434\u0440\u0435\u0441 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u0437 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u0442.\u0435. \u0432\u044b\u0437\u043e\u0432 \u043e\u0431\u043b\u0430\u0434\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u0441\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u043d\u0435 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0431\u043b\u043e\u043a\u0443 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u043d\u0430\u0434\u0435\u0436\u0434\u044b \u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0435\u0433\u043e \u043c\u0438\u0441\u0441\u0438\u0438. \u042d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0431\u0435\u0441\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u044b\u043c \u0432\u044b\u043d\u043e\u0441 \u0442\u0430\u043a\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043d\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043f\u043e\u0440\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0435\u0434\u0438\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439.<\/p>\n<h5>\u041e\u0446\u0435\u043d\u043a\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438<\/h5>\n<p>  \u0412 \u043b\u0443\u0447\u0448\u0435\u043c, \u043d\u0430\u0438\u043c\u0435\u043d\u0435\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0451\u043c\u043a\u043e\u043c, \u0441\u043b\u0443\u0447\u0430\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0435 \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u0436\u0435 \u0431\u0430\u0439\u0442\u0435 \u0438 \u0432\u0435\u0440\u043d\u0451\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u0418\u043c\u0435\u043d\u043d\u043e \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0437\u0430\u0442\u0440\u0430\u0442\u0438\u0442 \u043d\u0430\u0438\u043c\u0435\u043d\u044c\u0448\u0435\u0435 \u0432\u0440\u0435\u043c\u044f. \u0412 \u0445\u0443\u0434\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441\u0440\u0430\u0432\u043d\u0438\u0442 \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0438 \u043d\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0439. \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0431\u043b\u043e\u043a\u0430\u043c\u0438 \u0432 \u0446\u0438\u043a\u043b\u0435.<\/p>\n<p>  \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0430\u043d\u0430\u043b\u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0437\u0430 \u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c \u043d\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f, \u0442\u043e \u0434\u043b\u044f \u043e\u0446\u0435\u043d\u043a\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0431\u044b\u043b\u043e \u0440\u0435\u0448\u0435\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0432\u0435 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438, \u0438 \u0443\u0436\u0435 \u043f\u043e \u043b\u043e\u0433\u0443 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438 \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0442\u044c \u043e\u0431\u0430 \u044d\u0442\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f. \u0414\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u043b\u0443\u0447\u0448\u0435\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u044f, \u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0431\u044b\u043b\u0430 \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u043e\u0442\u043b\u0438\u0447\u0430\u043b\u0438\u0441\u044c, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430, \u0430 \u0432\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e\u0449\u0430\u044f \u0432\u0441\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b, \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0436\u0435 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0446\u0438\u043a\u043b\u0430 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cs\">      private static bool CompareArraysWithPInvokeMethod()       {          var result = true;          for (int i = CountArrays - 1; i &gt;= 0; i--) \/\/\u0426\u0438\u043a\u043b \u0432 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438             for (int j = 0; j &lt; CountArrays; j++)             {                var tmp = ByteArrayCompareWithPInvoke(s_arrays[i], s_arrays[j]);                 result = result && tmp;             }          return result;       } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u0435\u0440\u0432\u0430\u044f \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0430 (\u043b\u0443\u0447\u0448\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439)<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>main  msvcrt.memcmp               mov     edi, edi main  msvcrt.75A97977             push    ebp                             ESP=0041EC74 main  msvcrt.75A97978             mov     ebp, esp                        EBP=0041EC74  main  msvcrt.75A9797A             push    esi                             ESP=0041EC70 main  msvcrt.75A9797B             push    edi                             ESP=0041EC6C  main  msvcrt.75A9797C             mov     edi, [ebp+10]                   EDI=00080000                     ; edi &lt;-- count  main  msvcrt.75A9797F             mov     eax, edi                        EAX=00080000                     ; eax &lt;-- edi main  msvcrt.75A97981             sub     eax, 0                                                           ; if (eax == 0) {result &lt;-- 0; return;} main  msvcrt.75A97984             je      msvcrt.zeroResult_GoReturn main  msvcrt.75A9798A             dec     eax                             EAX=0007FFFF main  msvcrt.75A9798B             je      msvcrt.75A98C10 main  msvcrt.75A97991             dec     eax                             EAX=0007FFFE main  msvcrt.75A97992             je      msvcrt.75A9E610 main  msvcrt.75A97998             dec     eax                             EAX=0007FFFD main  msvcrt.75A97999             je      msvcrt.75A9E5DF main  msvcrt.75A9799F             dec     eax                             EAX=0007FFFC main  msvcrt.75A979A0             je      msvcrt.75A98BD2  main  msvcrt.75A979A6             mov     ecx, [ebp+0C]                   ECX=034C53B8                    ; ecx &lt;-- buf1 main  msvcrt.75A979A9             mov     eax, [ebp+8]                    EAX=05C41038                    ; eax &lt;-- buf2 main  msvcrt.75A979AC             push    ebx                             ESP=0041EC68 main  msvcrt.75A979AD             push    20                              ESP=0041EC64                    ; \u041e\u0447\u0435\u043d\u044c \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0447\u0438\u0441\u043b\u043e \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 main  msvcrt.75A979AF             pop     edx                             EDX=00000020, ESP=0041EC68  ;--------------------------------\u041d\u0430\u0447\u0430\u043b\u043e \u0446\u0438\u043a\u043b\u0430 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f main  msvcrt.75A979B0             cmp     edi, edx main  msvcrt.75A979B2             jae     msvcrt.75A993A7  main  msvcrt.75A993A7             mov     esi, [eax]                      ESI=4241403F main  msvcrt.75A993A9             cmp     esi, [ecx] main  msvcrt.75A993AB             jne     msvcrt.75AA80E7                                                 ; \u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0438\u0435  main  msvcrt.75AA80E7             movzx   esi, byte ptr [eax]             ESI=0000003F main  msvcrt.75AA80EA             movzx   ebx, byte ptr [ecx]             EBX=00000001 main  msvcrt.75AA80ED             sub     esi, ebx                        ESI=0000003E                    ; \u0412\u044b\u0447\u0438\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043d\u0438\u0446\u044b \u043c\u0435\u0436\u0434\u0443 \u043d\u0443\u043b\u0435\u0432\u044b\u043c\u0438 \u0431\u0430\u0439\u0442\u0430\u043c\u0438 DWORD\u2019\u0430 main  msvcrt.75AA80EF             jne     msvcrt.75AA8178   main  msvcrt.75AA8178             xor     ebx, ebx                        EBX=00000000                    ; \u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 ebx main  msvcrt.75AA817A             test    esi, esi main  msvcrt.75AA817C             setg    bl                              EBX=00000001 main  msvcrt.75AA817F             lea     ebx, [ebx+ebx-1] main  msvcrt.75AA8183             mov     esi, ebx                        ESI=00000001 main  msvcrt.75AA8185             test    esi, esi main  msvcrt.75AA8187             jne     msvcrt.75A98AB1  main  msvcrt.75A98AB1             mov     eax, esi                        EAX=00000001 main  msvcrt.75A98AB3             jmp     msvcrt.75A97A1E  main  msvcrt.75A97A1E             pop     ebx                             EBX=00852AE0, ESP=0041EC6C main  msvcrt.return1              pop     edi                             ESP=0041EC70, EDI=034C53B8 main  msvcrt.75A97A20             pop     esi                             ESP=0041EC74, ESI=034C53B0 main  msvcrt.75A97A21             pop     ebp                             ESP=0041EC78, EBP=0041ECC4 main  msvcrt.75A97A22             ret                                     ESP=0041EC7C <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u041f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u0431\u0440\u043e\u0441\u0430\u0435\u0442\u0441\u044f \u0432 \u0433\u043b\u0430\u0437\u0430 \u2013 \u0442\u043e, \u0447\u0442\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0447\u0430\u0441\u0442\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u0442.\u0435. \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u043a\u043e\u0433\u0434\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 count \u043b\u0435\u0436\u0438\u0442 \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 [0..4], \u0441\u0434\u0435\u043b\u0430\u043d\u0430 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u043e. \u041e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0433\u0430\u0434\u0430\u0442\u044c, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u044d\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f switch \u0438\u043b\u0438 \u0442\u0430\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u044b\u043b\u0430 \u0437\u0430\u0432\u0435\u0434\u0435\u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u0435\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0448\u0430\u0433\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438. \u041e\u0434\u043d\u0430\u043a\u043e \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442, \u0447\u0442\u043e \u044d\u0442\u043e \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u0431\u044b\u043b switch. \u0421 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u044d\u0442\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u0440\u0430\u0437\u0443\u043c\u043d\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435, \u0442.\u043a. \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0446\u0438\u043a\u043b\u0430.<\/p>\n<p>  \u0412\u0442\u043e\u0440\u043e\u0435, \u0447\u0442\u043e \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u0431\u0440\u043e\u0441\u0438\u043b\u043e\u0441\u044c \u0432 \u0433\u043b\u0430\u0437\u0430 \u2013 \u0432\u0435\u0441\u044c\u043c\u0430 \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0437\u0430\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u0447\u0438\u0441\u043b\u0430 0x20 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 edx (\u0447\u0435\u0440\u0435\u0437 \u0441\u0442\u0435\u043a). \u042d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438, \u0438 \u044f\u0432\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0438\u0441\u0430\u043b\u0430\u0441\u044c \u043d\u0435 \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435. \u0427\u0435\u043b\u043e\u0432\u0435\u043a \u0431\u044b \u0442\u0430\u043a\u043e\u0433\u043e \u043d\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043b, \u0442.\u043a. \u044d\u0442\u043e \u0431\u0435\u0441\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e: \u0441\u0442\u0435\u043a \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043f\u0430\u043c\u044f\u0442\u0438, \u0430 \u043a \u043d\u0435\u0439 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0433\u0434\u0430 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435, \u0447\u0435\u043c \u043a \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u043c. \u0420\u0438\u0441\u043a\u043d\u0443 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u044f (inline).<\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f \u0434\u0432\u043e\u0439\u043d\u044b\u0445 \u0441\u043b\u043e\u0432 \u0432 \u0431\u0443\u0444\u0435\u0440\u0430\u0445 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 0x75AA8178, \u0433\u0434\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u0435\u0440\u0432\u044b\u0445 \u0431\u0430\u0439\u0442\u043e\u0432 \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0431\u0443\u0444\u0435\u0440\u043e\u0432 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b esi \u0438 ebx \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0430\u043c, \u0433\u0434\u0435 \u0431\u044b\u043b\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0435. \u0417\u0430\u0442\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043d\u0438\u0446\u044b \u043c\u0435\u0436\u0434\u0443 \u044d\u0442\u0438\u043c\u0438 \u0431\u0430\u0439\u0442\u0430\u043c\u0438, \u0438, \u0435\u0441\u043b\u0438 \u043d\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0439, \u0442\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0431\u0430\u0439\u0442\u044b, \u0438 \u0442\u0430\u043a \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u0434\u0432\u043e\u0439\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430. \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043d\u043e\u043c\u0435\u0440\u0430 \u0431\u0430\u0439\u0442\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0435. \u042d\u0442\u043e \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043a\u043e\u0434 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0431\u0430\u0439\u0442\u0430 \u0432 DWORD\u2019\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u0435\u043d \u043a\u043e\u0434\u0443 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430, \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u043c\u0443 \u0432\u044b\u0448\u0435 \u0432 \u0442\u0440\u044d\u0439\u0441\u043b\u043e\u0433\u0435 \u043f\u0435\u0440\u0432\u043e\u0439 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0431\u0430\u0439\u0442\u043e\u0432 \u0434\u0432\u043e\u0439\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>;Address   Hex dump          Command                                  Comments 75AA80E7   &gt;  0FB630        movzx   esi, byte ptr [eax] 75AA80EA   .  0FB619        movzx   ebx, byte ptr [ecx] 75AA80ED   .  2BF3          sub     esi, ebx                           ; \u0412\u044b\u0447\u0438\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043d\u0438\u0446\u044b \u043c\u0435\u0436\u0434\u0443 \u043d\u0443\u043b\u0435\u0432\u044b\u043c\u0438 \u0431\u0430\u0439\u0442\u0430\u043c\u0438 DWORD\u2019\u0430 75AA80EF   .- 0F85 83000000 jne     msvcrt.75AA8178                    ; \u0414\u0436\u0430\u043c\u043f \u043d\u0430 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 ebx  75AA80F5   &gt;  0FB670 01     movzx   esi, byte ptr [eax+1] 75AA80F9   .  0FB659 01     movzx   ebx, byte ptr [ecx+1] 75AA80FD   .  2BF3          sub     esi, ebx 75AA80FF   .- 0F84 1EF9FEFF je      msvcrt.75A97A23 ; \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u043e\u043f\u0443\u0449\u0435\u043d\u0430  75A97A23   &gt;  0FB670 02     movzx   esi, byte ptr [eax+2] 75A97A27   .  0FB659 02     movzx   ebx, byte ptr [ecx+2] 75A97A2B   .  2BF3          sub     esi, ebx 75A97A2D   .- 74 15         je      short msvcrt.75A97A44 ; \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u043e\u043f\u0443\u0449\u0435\u043d\u0430  75A97A44   &gt;  0FB670 03     movzx   esi, byte ptr [eax+3] 75A97A48   .  0FB659 03     movzx   ebx, byte ptr [ecx+3] 75A97A4C   .  2BF3          sub     esi, ebx 75A97A4E   .- 0F84 5F190000 je      msvcrt.75A993B3                    ; \u0414\u0436\u0430\u043c\u043f \u043a\u0443\u0434\u0430-\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u044c \u0446\u0438\u043a\u043b\u0430  75A97A54   .  33DB          xor     ebx, ebx                           ; \u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 ebx 75A97A56   .  85F6          test    esi, esi 75A97A58   .  0F9FC3        setg    bl 75A97A5B   .  8D5C1B FF     lea     ebx, [ebx+ebx-1] 75A97A5F   .  8BF3          mov     esi, ebx 75A97A61   .- E9 4D190000   jmp     msvcrt.75A993B3  ; \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u043e\u043f\u0443\u0449\u0435\u043d\u0430 75A993B1   . |33F6          xor     esi, esi 75A993B3   &gt; |85F6          test    esi, esi 75A993B5   .-|0F85 F6F6FFFF jne     msvcrt.75A98AB1 <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0414\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u043d\u0435\u0445\u043e\u0440\u043e\u0448\u043e, \u043d\u043e \u043d\u0435 \u0441\u0442\u0440\u0430\u0448\u043d\u043e, \u0430 \u0432\u043e\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0431\u0430\u0439\u0442\u043e\u0432 \u2013 \u043d\u0435 \u043b\u0443\u0447\u0448\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0434\u0432\u043e\u0439\u043d\u044b\u0445 \u0441\u043b\u043e\u0432, \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u0447\u0442\u043e \u043d\u043e\u043c\u0435\u0440 \u0431\u0430\u0439\u0442\u0430 \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0443\u0436\u0435 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0432\u0430\u0442, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u0435\u0449\u0451 \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0432\u0430\u0442\u044b.<\/p>\n<p>  \u041f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043d\u0430 \u043b\u043e\u0433 \u0432\u0442\u043e\u0440\u043e\u0439 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438: \u0437\u0430 \u043e\u0434\u043d\u0443 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044e \u0446\u0438\u043a\u043b\u0430 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f 8 \u0434\u0432\u043e\u0439\u043d\u044b\u0445 \u0441\u043b\u043e\u0432, \u0438 \u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u043e: \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0446\u0438\u043a\u043b \u0440\u0430\u0437\u0432\u0451\u0440\u043d\u0443\u0442, \u0430 \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u043f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0438\u0434\u0451\u0442 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u043a\u043e\u0434: \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 esi \u0437\u0430\u043d\u043e\u0441\u0438\u0442\u0441\u044f 0 \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 esi. \u0423 \u043c\u0435\u043d\u044f \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043e \u0442\u043e\u043c, \u0437\u0430\u0447\u0435\u043c \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e, \u043e\u0434\u043d\u0430\u043a\u043e \u0435\u0441\u0442\u044c \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0442\u0430\u043a\u043e\u0435 \u043c\u043e\u0433\u043b\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f: \u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u043c\u0430\u043a\u0440\u043e\u0441\u0430, \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0432\u0448\u0435\u0433\u043e \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0439 \u043a\u043e\u0434, \u0430 \u0432\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043f\u043e\u0445\u043e\u0436\u0435, \u0447\u0442\u043e \u043c\u0430\u0439\u043a\u0440\u043e\u0441\u043e\u0444\u0442\u043e\u0432\u0441\u043a\u0438\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 C \u043d\u0435 \u0442\u0430\u043a \u0445\u043e\u0440\u043e\u0448, \u043a\u0430\u043a \u044f \u043e\u0431 \u044d\u0442\u043e\u043c \u0434\u0443\u043c\u0430\u043b \u0440\u0430\u043d\u044c\u0448\u0435.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0412\u0442\u043e\u0440\u0430\u044f \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0430 (\u0442\u043e\u043b\u044c\u043a\u043e \u0446\u0438\u043a\u043b)<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>;--------------------------------\u041d\u0430\u0447\u0430\u043b\u043e \u0446\u0438\u043a\u043b\u0430 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f main  msvcrt.75A979B0             cmp     edi, edx main  msvcrt.75A979B2             jae     msvcrt.75A993A7  main  msvcrt.75A993A7             mov     esi, [eax]                      ESI=00000000 main  msvcrt.75A993A9             cmp     esi, [ecx] main  msvcrt.75A993AB             jne     msvcrt.75AA80E7 main  msvcrt.75A993B1             xor     esi, esi main  msvcrt.75A993B3             test    esi, esi main  msvcrt.75A993B5             jne     msvcrt.75A98AB1  main  msvcrt.75A993BB             mov     esi, [eax+4] main  msvcrt.75A993BE             cmp     esi, [ecx+4] main  msvcrt.75A993C1             jne     msvcrt.75AA811F main  msvcrt.75A993C7             xor     esi, esi main  msvcrt.75A993C9             test    esi, esi main  msvcrt.75A?993CB             jne     msvcrt.75A98AB1  main  msvcrt.75A993D1             mov     esi, [eax+8] main  msvcrt.75A993D4             cmp     esi, [ecx+8] main  msvcrt.75A993D7             jne     msvcrt.75A97A9A main  msvcrt.75A993DD             xor     esi, esi main  msvcrt.75A993DF             test    esi, esi main  msvcrt.75A993E1             jne     msvcrt.75A98AB1   main  msvcrt.75A993E7             mov     esi, [eax+0C] main  msvcrt.75A993EA             cmp     esi, [ecx+0C] main  msvcrt.75A993ED             jne     msvcrt.75A97B1F main  msvcrt.75A993F3             xor     esi, esi main  msvcrt.75A993F5             test    esi, esi main  msvcrt.75A993F7             jne     msvcrt.75A98AB1   main  msvcrt.75A993FD             mov     esi, [eax+10] main  msvcrt.75A99400             cmp     esi, [ecx+10] main  msvcrt.75A99403             jne     msvcrt.75A97BA4 main  msvcrt.75A99409             xor     esi, esi main  msvcrt.75A9940B             test    esi, esi main  msvcrt.75A9940D             jne     msvcrt.75A98AB1   main  msvcrt.75A99413             mov     esi, [eax+14] main  msvcrt.75A99416             cmp     esi, [ecx+14] main  msvcrt.75A99419             jne     msvcrt.75A97C29 main  msvcrt.75A9941F             xor     esi, esi main  msvcrt.75A99421             test    esi, esi main  msvcrt.75A99423             jne     msvcrt.75A98AB1   main  msvcrt.75A99429             mov     esi, [eax+18] main  msvcrt.75A9942C             cmp     esi, [ecx+18] main  msvcrt.75A9942F             jne     msvcrt.75AA1172 main  msvcrt.75A99435             xor     esi, esi main  msvcrt.75A99437             test    esi, esi main  msvcrt.75A99439             jne     msvcrt.75A98AB1   main  msvcrt.75A9943F             mov     esi, [eax+1C] main  msvcrt.75A99442             cmp     esi, [ecx+1C] main  msvcrt.75A99445             jne     msvcrt.75A97CFC main  msvcrt.75A9944B             xor     esi, esi main  msvcrt.75A9944D             test    esi, esi main  msvcrt.75A9944F             jne     msvcrt.75A98AB1   main  msvcrt.75A99455             add     eax, edx                        EAX=031353B8 main  msvcrt.75A99457             add     ecx, edx                        ECX=031353B8 main  msvcrt.75A99459             sub     edi, edx                        EDI=0007FFE0 main  msvcrt.75A9945B             jmp     msvcrt.75A979B0 <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0442\u043e \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043e\u0431\u044a\u0451\u043c\u0430\u0445 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043f\u043e\u043a\u0430\u0437\u0430\u043b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0430 ~10% \u0445\u0443\u0436\u0435, \u0447\u0435\u043c \u043a\u043e\u0434, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0439 unsafe. \u041f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0443\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0447\u0442\u0435\u043d\u0438\u044f \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435, \u0447\u0435\u043c \u043a\u044d\u0448 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0438, \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435, \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b. \u041d\u043e \u0441\u0442\u043e\u043b\u044c \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u0430\u044f \u0440\u0430\u0437\u043d\u0438\u0446\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0434\u0430\u043b\u0438 \u043e\u0434\u043d\u0438 \u043b\u0438\u0448\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u043c\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u043a\u0440\u0430\u0439\u043d\u0435 \u0432\u0430\u0436\u043d\u044b. \u0420\u0438\u0441\u043a\u043d\u0443 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c, \u0447\u0442\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u0430\u0431\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435 \u0441 \u043c\u0435\u043d\u044c\u0448\u0435\u0439 \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439, \u0434\u0430\u043b\u043e \u0431\u044b \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0440\u0430\u0437\u043d\u0438\u0446\u0443.  <\/p>\n<h3>\u0412\u044b\u0432\u043e\u0434\u044b<\/h3>\n<p>  <\/p>\n<ol>\n<li>\u0415\u0441\u043b\u0438 \u043d\u0430\u0434\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0435 (7 \u0431\u0430\u0439\u0442 \u0438 \u043c\u0435\u043d\u044c\u0448\u0435) \u043c\u0430\u0441\u0441\u0438\u0432\u044b, \u0431\u0435\u0440\u0451\u043c \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 (\u043f\u043e\u0431\u0430\u0439\u0442\u043d\u043e\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0432 \u0446\u0438\u043a\u043b\u0435), \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u2014 unsafe, \u0430 \u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u0442 \u043b\u0443\u043a\u0430\u0432\u043e\u0433\u043e.<\/li>\n<li>\u0412\u043e\u043a\u0440\u0443\u0433 .Net \u0438 CLR \u0445\u043e\u0434\u0438\u0442 \u043c\u043d\u043e\u0433\u043e \u043b\u0435\u0433\u0435\u043d\u0434. \u041b\u044e\u0434\u0435\u0439 \u0443\u0431\u0435\u0434\u0438\u043b\u0438 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e JIT-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0445\u043e\u0440\u043e\u0448\u0438\u0439, \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434, \u0447\u0442\u043e CLR \u00ab\u0437\u0430\u0442\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u00bb \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u043e\u0434 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440. \u042d\u0442\u043e \u043d\u0435\u043f\u0440\u0430\u0432\u0434\u0430. \u0412 \u0442\u0435\u043e\u0440\u0438\u0438 JIT-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0441\u043f\u043e\u0441\u043e\u0431\u0435\u043d \u0442\u0432\u043e\u0440\u0438\u0442\u044c \u0447\u0443\u0434\u0435\u0441\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438, \u043d\u043e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e\u0433\u043e. \u041d\u0443\u0436\u0435\u043d \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u043a\u043e\u0434 \u2014 \u0431\u0435\u0440\u0438\u0442\u0435 C++-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043e\u0442 Intel, \u0430 \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c \u0438\u0437 \u0436\u0435\u043b\u0435\u0437\u0430 \u0432\u044b\u0436\u0430\u0442\u044c, \u0442\u043e \u0432\u043e\u043e\u0440\u0443\u0436\u0430\u0439\u0442\u0435\u0441\u044c \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e\u043c \u043f\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u0442 \u043e\u0434\u043d\u043e\u0438\u043c\u0451\u043d\u043d\u043e\u0439 \u0444\u0438\u0440\u043c\u044b (AMD \u0438\u043b\u0438 Intel) \u0438 \u043f\u0438\u0448\u0438\u0442\u0435 \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435.<\/li>\n<li>\u0410\u043d\u0430\u043b\u0438\u0437 C-RunTime \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043d\u0435 \u0442\u0432\u043e\u0440\u0438\u0442 \u0447\u0443\u0434\u0435\u0441, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043e\u0434\u0438\u043d \u0438\u0437 \u043b\u0443\u0447\u0448\u0438\u0445 C-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432 \u2013 MS VC. \u0426\u0438\u0442\u0430\u0442\u0430 \u0438\u0437 \u0441\u0442\u0430\u0442\u044c\u0438 \u00ab\u041e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u0435\u0442\u043e\u0434\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438\u00bb (http:\/\/rsdn.ru\/article\/optimization\/optimization.xml): \u00ab\u0422\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u043e\u0441\u043e\u0431\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e, \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u0443\u044e \u043d\u0430 \u0441\u0430\u043c\u044b\u0439 \u043e\u0431\u0449\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u0438 \u043f\u043e\u0442\u043e\u043c\u0443 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043c\u0435\u043d\u0435\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u0443\u044e\u00bb.<\/li>\n<\/ol>\n<h3>\u0421\u043f\u0438\u0441\u043e\u043a \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u044b<\/h3>\n<p>  <\/p>\n<ol>\n<li>Intel\u00ae 64 and IA-32 Architectures Software Developer Manuals.CHAPTER 2. Intel \u00ae 64 Architecture <a href=\"http:\/\/www.intel.com\/content\/www\/us\/en\/processors\/architectures-software-developer-manuals.html\">www.intel.com\/content\/www\/us\/en\/processors\/architectures-software-developer-manuals.html<\/a>.<\/li>\n<li>AMD64 Architecture Programmer\u2019s Manual Volume 1: Application Programming CHAPTER 1 Long Mode<br \/>   <a href=\"http:\/\/amd-dev.wpengine.netdna-cdn.com\/wordpress\/media\/2012\/10\/24592_APM_v11.pdf\">amd-dev.wpengine.netdna-cdn.com\/wordpress\/media\/2012\/10\/24592_APM_v11.pdf<\/a><\/li>\n<li>Intel\u00ae 64 and IA-32 Architectures Optimization Reference Manual. CHAPTER 3. Alignment <a href=\"http:\/\/www.intel.com\/content\/www\/us\/en\/architecture-and-technology\/64-ia-32-architectures-optimization-manual.html\">www.intel.com\/content\/www\/us\/en\/architecture-and-technology\/64-ia-32-architectures-optimization-manual.html<\/a><\/li>\n<li>Windows Internals, Sixth Edition, Part 1, CHAPTER 5 Processes, Threads, and Jobs<\/li>\n<li>Windows Internals, Sixth Edition, Part 2, CHAPTER 10. Memory Management<\/li>\n<li>Intel\u00ae 64 and IA-32 Architectures Software Developer Manuals. CHAPTER 17. TIME-STAMP COUNTER<\/li>\n<li>MSDN Magazine 2005, May: Drill Into .NET Framework Internals to See How the CLR Creates Runtime Objects<br \/>   <a href=\"http:\/\/msdn.microsoft.com\/en-us\/magazine\/cc163791.aspx#S6\">msdn.microsoft.com\/en-us\/magazine\/cc163791.aspx#S6<\/a><\/li>\n<li>Joe Duffy, Professional .NET Framework 2.0 (Programmer to Programmer). Chapter 3: Inside the CLR, Just-In-Time (JIT) Compilation<\/li>\n<\/ol>\n<\/h4>\n<\/h4>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/214841\/\"> http:\/\/habrahabr.ru\/post\/214841\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">\n<h4>\u0421\u0443\u0442\u044c \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0441\u0442\u0430<\/h4>\n<p>  \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0435\u0439 \u0441\u043e\u0444\u0442\u0438\u043d\u044b \u044f \u0441\u0434\u0435\u043b\u0430\u043b \u0432\u044b\u0432\u043e\u0434 \u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0431\u0443\u0444\u0435\u0440\u043e\u0432.<br \/>  \u0422.\u043a. CRL \u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0434\u0432\u0430 \u043a\u0443\u0441\u043a\u0430 \u043f\u0430\u043c\u044f\u0442\u0438, \u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0431\u044b\u043b\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 \u0441\u043a\u043e\u0440\u0443\u044e \u0440\u0443\u043a\u0443 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e (\u043b\u0438\u0448\u044c \u0431\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e).<br \/>  \u041f\u043e\u0433\u0443\u0433\u043b\u0438\u0432 \u043f\u043e \u0444\u0440\u0430\u0437\u0435 \u00abBest Way to Compare Byte Arrays in .Net\u00bb, \u044f \u043f\u0440\u0438\u0448\u0451\u043b \u0432 \u0437\u0430\u043c\u0435\u0448\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e: \u0432 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u043b\u044e\u0434\u0438 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u0438\u0431\u043e LINQ,<br \/>  \u043b\u0438\u0431\u043e Enumerable.SequenceEqual(), \u0447\u0442\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0434\u043d\u043e \u0438 \u0442\u043e\u0436\u0435. \u0414\u0430\u0436\u0435 \u043d\u0430 SO \u044d\u0442\u043e \u0431\u044b\u043b \u0441\u0430\u043c\u044b\u0439 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442. \u0422.\u0435. \u043a\u0430\u0442\u0430\u0441\u0442\u0440\u043e\u0444\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e \u0437\u0430\u0431\u043b\u0443\u0436\u0434\u0435\u043d\u0438\u0435 \u0432\u0438\u0434\u0430:  <\/p>\n<blockquote><p>Compiler\\run-time environment will optimize your loop so you don&#8217;t need to worry about performance.<\/p><\/blockquote>\n<p>\u0412\u0437\u044f\u0442\u043e <a href=\"http:\/\/stackoverflow.com\/questions\/43289\/comparing-two-byte-arrays-in-net\">\u043e\u0442\u0441\u044e\u0434\u0430.<\/a><\/p>\n<p>  \u0418\u043c\u0435\u043d\u043d\u043e \u043e\u043d\u043e \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u043d\u0430\u0432\u0435\u043b\u043e \u043c\u0435\u043d\u044f \u043d\u0430 \u043c\u044b\u0441\u043b\u044c, \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u043e\u0441\u0442.<\/p>\n<p>  \u042f \u043f\u0440\u043e\u0432\u0451\u043b \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u044f\u0442\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0431\u0443\u0444\u0435\u0440\u043e\u0432, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0438\u0437 C#, \u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u0432 \u0432\u044b\u0431\u043e\u0440\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u0430.<br \/>  \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u044f \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0438 \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b \u043a\u043e\u0434, \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0439 JIT-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c \u0434\u043b\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 x86,<br \/>  \u0430 \u0442\u0430\u043a \u0436\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u043b \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u0434, \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0439 JIT-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c, \u0441 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 CRT \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-214841","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/214841","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=214841"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/214841\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=214841"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=214841"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=214841"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}