{"id":479743,"date":"2026-05-14T12:39:43","date_gmt":"2026-05-14T12:39:43","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=479743"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=479743","title":{"rendered":"\u0418\u0449\u0435\u043c \u0441\u0430\u043c\u044b\u0439 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 XML \u043f\u0430\u0440\u0441\u0435\u0440 \u0434\u043b\u044f Apple \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0418\u0418"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0418\u0418 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u044e\u0430\u043d\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u043f\u0440\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<p>\u041d\u044e\u0430\u043d\u0441 \u043f\u0435\u0440\u0432\u044b\u0439, \u0440\u0430\u0437\u043d\u044b\u0435 \u044f\u0437\u044b\u043a\u0438 \u0443 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">XML Parser<\/p>\n<\/th>\n<th>\n<p align=\"left\">Repository<\/p>\n<\/th>\n<th>\n<p align=\"left\">Language<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">AEXML<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/tadija\/AEXML\" rel=\"noopener noreferrer nofollow\">tadija\/AEXML<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">Swift<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">SWXMLHash<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/drmohundro\/SWXMLHash\" rel=\"noopener noreferrer nofollow\">drmohundro\/SWXMLHash<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">Swift<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">SwiftyXMLParser<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/yahoojapan\/SwiftyXMLParser\" rel=\"noopener noreferrer nofollow\">yahoojapan\/SwiftyXMLParser<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">Swift<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Kanna<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/tid-kijyun\/Kanna\" rel=\"noopener noreferrer nofollow\">tid-kijyun\/Kanna<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">Swift<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Fuzi<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/cezheng\/Fuzi\" rel=\"noopener noreferrer nofollow\">cezheng\/Fuzi<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">Swift<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Ono<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/mattt\/Ono\" rel=\"noopener noreferrer nofollow\">mattt\/Ono<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">Objective-C<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">KissXML<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/robbiehanson\/KissXML\" rel=\"noopener noreferrer nofollow\">robbiehanson\/KissXML<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">Objective-C<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041d\u044e\u0430\u043d\u0441 \u0432\u0442\u043e\u0440\u043e\u0439, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0437\u043d\u044b\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 CocoaPods \u0438 SwiftPM, \u0447\u0442\u043e-\u0442\u043e \u043e\u0434\u043d\u043e \u0438\u043b\u0438 \u043e\u0431\u0430 \u0441\u0440\u0430\u0437\u0443:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">XML Parser<\/p>\n<\/th>\n<th>\n<p align=\"left\">Repository<\/p>\n<\/th>\n<th>\n<p align=\"left\">CocoaPods<\/p>\n<\/th>\n<th>\n<p align=\"left\">SwiftPM<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">AEXML<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/tadija\/AEXML\" rel=\"noopener noreferrer nofollow\">tadija\/AEXML<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">Yes<\/p>\n<\/td>\n<td>\n<p align=\"left\">Yes<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">SWXMLHash<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/drmohundro\/SWXMLHash\" rel=\"noopener noreferrer nofollow\">drmohundro\/SWXMLHash<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">Yes<\/p>\n<\/td>\n<td>\n<p align=\"left\">Yes<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">SwiftyXMLParser<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/yahoojapan\/SwiftyXMLParser\" rel=\"noopener noreferrer nofollow\">yahoojapan\/SwiftyXMLParser<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">Yes<\/p>\n<\/td>\n<td>\n<p align=\"left\">Yes<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Kanna<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/tid-kijyun\/Kanna\" rel=\"noopener noreferrer nofollow\">tid-kijyun\/Kanna<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">Yes<\/p>\n<\/td>\n<td>\n<p align=\"left\">Yes<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Fuzi<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/cezheng\/Fuzi\" rel=\"noopener noreferrer nofollow\">cezheng\/Fuzi<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">Yes<\/p>\n<\/td>\n<td>\n<p align=\"left\">Yes<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Ono<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/mattt\/Ono\" rel=\"noopener noreferrer nofollow\">mattt\/Ono<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">Yes<\/p>\n<\/td>\n<td>\n<p align=\"left\">No<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">KissXML<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/robbiehanson\/KissXML\" rel=\"noopener noreferrer nofollow\">robbiehanson\/KissXML<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">Yes<\/p>\n<\/td>\n<td>\n<p align=\"left\">Yes<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041a\u0430\u043a \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446 \u0432\u044b\u0448\u0435, \u0434\u0432\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 <code>Ono<\/code> \u0438 <code>KissXML<\/code> \u0442\u0435\u043e\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0437\u0430\u043f\u0443\u0442\u0430\u0442\u044c \u0418\u0418, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043d\u0430 <code>Objective-C<\/code>, \u0430 <code>Ono<\/code> \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0430\u0440\u0430\u044f, \u0447\u0442\u043e \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 SwiftPM. \u0422\u0435\u043c \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u0418\u0418, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u043e\u0439\u0442\u0438 \u044d\u0442\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f, \u0441\u0432\u043e\u0435\u0433\u043e \u0440\u043e\u0434\u0430 \u0437\u0430\u0434\u0430\u043d\u0438\u0435 \u0441\u043e \u0437\u0432\u0435\u0437\u0434\u043e\u0447\u043a\u043e\u0439.<\/p>\n<p>\u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u043a\u0430\u043a \u044f \u0440\u0435\u0448\u0430\u043b \u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443. \u042f \u0441\u043e\u0437\u0434\u0430\u043b \u043f\u0443\u0441\u0442\u043e\u0439 iOS \u043f\u0440\u043e\u0435\u043a\u0442, \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0432\u0441\u0435 \u043f\u0430\u0440\u0441\u0435\u0440\u044b \u043a\u0430\u043a CocoaPods \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0435 \u0432\u0441\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b\u0438 SwiftPM. \u0412 iOS \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u043b \u043f\u0430\u0440\u0443 \u043a\u043d\u043e\u043f\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a. \u041c\u043d\u0435 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u044f \u044d\u0442\u0438 \u043a\u043d\u043e\u043f\u043a\u0438 \u0440\u0438\u0441\u0443\u044e \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u043d\u044c \u0443\u0436\u0435 \u043c\u043d\u043e\u0433\u043e \u043b\u0435\u0442.<\/p>\n<p>\u041f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u0418\u0418\u0448\u0435\u043a, \u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043b, \u0447\u0442\u043e \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0435 iOS \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d\u0438 \u043d\u0435 \u0441\u043c\u043e\u0433\u0443\u0442 \u043a\u043b\u0438\u043a\u0430\u0442\u044c UI, \u0430 \u0431\u0443\u0434\u0443\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u0443\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u0443 \u043f\u043e\u0434 macOS, \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 <code>bash<\/code>. \u0422\u0430\u043a \u043a\u0430\u043a \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0438\u0448\u0435\u0442\u0441\u044f \u043d\u0430 Swift, \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u044e, \u0447\u0442\u043e \u0418\u0418 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c SwiftPM \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432, \u043d\u043e \u0447\u0442\u043e \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 <code>Ono<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 SwiftPM, \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0435 \u044f\u0441\u043d\u043e.<\/p>\n<h3>\u041a\u0430\u043a \u044f \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u044e \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0440\u0435\u0439\u0442\u0438\u043d\u0433<\/h3>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442, \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u0432\u0430\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0443, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0431\u0438\u0437\u043d\u0435\u0441. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u0432\u043e\u0442 \u0442\u0430\u043a\u0438\u0435 \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0438 \u043e\u0446\u0435\u043d\u043a\u0438 \u0418\u0418 \u0431\u0443\u0434\u0443\u0442 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0440\u0435\u0439\u0442\u0438\u043d\u0433\u0430 (\u043e\u0442 \u0432\u0430\u0436\u043d\u043e\u0433\u043e \u043a \u043c\u0435\u043d\u0435\u0435 \u0432\u0430\u0436\u043d\u043e\u043c\u0443):<\/p>\n<ol>\n<li>\n<p>\u041a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 (\u0434\u043e\u043b\u0436\u043d\u043e \u00b1 \u0441\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0441 \u043c\u043e\u0438\u043c\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438)<\/p>\n<\/li>\n<li>\n<p>\u0412\u0441\u0435 7 \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b<\/p>\n<\/li>\n<li>\n<p>\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438<\/p>\n<\/li>\n<li>\n<p>\u0426\u0435\u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 (\u0434\u0430, \u0446\u0435\u043d\u0430 \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u043c\u0435\u0441\u0442\u0435, \u043f\u0443\u0441\u0442\u044c \u0431\u0438\u0437\u043d\u0435\u0441 \u043f\u043b\u0430\u0442\u0438\u0442, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u0432 \u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0430\u0445)<\/p>\n<\/li>\n<\/ol>\n<h3>\u0414\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0418\u0418<\/h3>\n<p>\u041a\u0430\u0436\u0434\u0430\u044f \u0418\u0418 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0430\u0441\u044c \u0432 \u0441\u0432\u043e\u0435\u0439 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043b\u0435\u0436\u0430\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e 2 \u0444\u0430\u0439\u043b\u0430:<\/p>\n<ol>\n<li>\n<p>\u0424\u0430\u0439\u043b \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 <code>task.md<\/code> \u0432 100 \u0441\u0442\u0440\u043e\u043a, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0431\u0435\u0437 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439, \u0431\u044b\u043b\u043e \u044f\u0432\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u043e, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u0446\u0435\u043b\u0438 \u043b\u044e\u0431\u044b\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430. \u0424\u0430\u0439\u043b \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0431\u044b\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043c\u043d\u043e\u0439, \u043f\u043e\u0442\u043e\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e GPT \u0435\u0433\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043b, \u0447\u0442\u043e\u0431\u044b \u0443 \u0418\u0418 \u0442\u043e\u0447\u043d\u043e \u043d\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u043b\u043e \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u043f\u043e \u0437\u0430\u0434\u0430\u0447\u0435.<\/p>\n<\/li>\n<li>\n<p>\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 XML \u0444\u0430\u0439\u043b \u0441 500\u043a \u0441\u0442\u0440\u043e\u043a, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a.<\/p>\n<\/li>\n<\/ol>\n<p>\u0412 \u0437\u0430\u0434\u0430\u0447\u0435 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u043e, \u0447\u0442\u043e \u0432 \u043a\u043e\u043d\u0446\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u043a \u0441 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0431\u0430\u0440\u0430\u043c\u0438, \u0442\u043e \u0435\u0441\u0442\u044c \u0432\u0441\u0435 \u0433\u0440\u0430\u0444\u0438\u043a\u0438, \u0447\u0442\u043e \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u043d\u0438\u0436\u0435, \u044d\u0442\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0418\u0418 \u043f\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c \u0438\u0445 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b.<\/p>\n<p>\u041f\u0440\u043e\u043c\u043f\u0442 \u043d\u0435 \u0431\u0443\u0434\u0443 \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u043a \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f (\u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0445\u043e\u0442\u0435\u043b), \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u044e \u0438\u043c \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u043c\u0430\u0436\u043e\u0440\u043d\u044b\u0439 \u0432\u044b\u0445\u043e\u0434 \u0418\u0418, \u0438\u043d\u0430\u0447\u0435 \u0418\u0418\u0448\u043a\u0438 \u043d\u0430\u0439\u0434\u0443\u0442 \u0435\u0433\u043e \u0438 \u043d\u0430\u0443\u0447\u0430\u0442\u0441\u044f \u0440\u0435\u0448\u0430\u0442\u044c.<\/p>\n<h3>Evn (\u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435)<\/h3>\n<ul>\n<li>\n<p>\u041b\u0438\u0447\u043d\u044b\u0439 \u043c\u0430\u043a\u0431\u0443\u043a \u0441 macOS 26<\/p>\n<\/li>\n<li>\n<p>Xcode 26 (git, xcodebuild, swift, swiftpm, clang, Apple SDK)<\/p>\n<\/li>\n<li>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0441\u0442\u043e\u044f\u0442 <code>ruby<\/code> \u0438 <code>python<\/code> \u0442\u0430\u043a \u043a\u0430\u043a \u0418\u0418 \u0447\u0430\u0441\u0442\u043e \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442<\/p>\n<\/li>\n<li>\n<p>\u0422\u0430\u043a\u0436\u0435 <code>curl<\/code>, <code>wget<\/code>, <code>jq<\/code><\/p>\n<\/li>\n<li>\n<p>\u042f\u0432\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043b \u0432 <code>task.md<\/code>, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438: <\/p>\n<ul>\n<li>\n<p>\u041f\u0440\u043e\u0435\u043a\u0442\u0430<\/p>\n<\/li>\n<li>\n<p>\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u0430\u044f \/*\/Xcode\/*\/DerivedData<\/p>\n<\/li>\n<li>\n<p>\/tmp\/<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>\u041a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0438\u0441\u044c \u0442\u0435\u0441\u0442\u044b<\/h3>\n<ol>\n<li>\n<p>\u042f \u0441\u043e\u0437\u0434\u0430\u043b \u0447\u0438\u0441\u0442\u044b\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u043d\u0430 <code>openrouter.ai<\/code> \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b <code>OpenCode<\/code> \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0418\u0418. \u0422\u0430\u043a \u043a\u0430\u043a \u0430\u043a\u043a \u043d\u043e\u0432\u044b\u0439, \u0442\u043e \u043d\u0430 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0435 \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 <code>\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c<\/code> \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0442\u0440\u0430\u0447\u0435\u043d\u043d\u044b\u0435 \u043a\u0440\u0435\u0434\u0438\u0442\u044b \u0438 \u0442\u043e\u043a\u0435\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u043e\u0434\u0438\u043d <code>openrouter.ai<\/code> \u043a\u043b\u044e\u0447 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0418\u0418 (\u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u043b \u0441\u0432\u043e\u0439 \u043b\u0438\u0447\u043d\u044b\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f GPT)<\/p>\n<\/li>\n<li>\n<p>\u0422\u0435\u0441\u0442\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0438\u0441\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0435\u0437\u0430\u0434\u0443\u0434\u043e\u0441\u0441\u0438\u0442\u044c <code>openrouter.ai<\/code>.<\/p>\n<\/li>\n<\/ol>\n<h2>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0442\u0435\u0441\u0442\u043e\u0432<\/h2>\n<p>\u0421\u043f\u0438\u0441\u043e\u043a \u0431\u0443\u0434\u0435\u0442 \u043e\u0442 \u043b\u0443\u0447\u0448\u0435\u0433\u043e \u043a \u0445\u0443\u0434\u0448\u0435\u043c\u0443, \u0447\u0442\u043e\u0431\u044b \u0441\u0440\u0430\u0437\u0443 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439 \u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0433\u0434\u0435 \u0418\u0418 \u0441\u0431\u0438\u043b\u0430\u0441\u044c \u0432 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u0441 \u043f\u043e\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u0435\u043c. \u0415\u0449\u0435 \u0440\u0430\u0437 \u043c\u043e\u0439 \u043b\u0438\u0447\u043d\u044b\u0439 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u043e\u0442 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u043c \u043e\u0442\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438:<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/3a\/76\/03\/3a76032f5cfac1c5be9731cafb9d8616.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/3a\/76\/03\/3a76032f5cfac1c5be9731cafb9d8616.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/3a\/76\/03\/3a76032f5cfac1c5be9731cafb9d8616.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<hr\/>\n<h4>Gemini 3.1 Pro Preview Custom Tools (Xhigh)<\/h4>\n<p>\u0421\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u043b \u044d\u0442\u0443 \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u043c\u0435\u0441\u0442\u043e <code>Gemini 3.1 Pro Preview<\/code>. \u041d\u043e \u043f\u043e \u043d\u0435\u0439 \u0435\u0441\u0442\u044c \u0442\u043e\u0436\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0442\u043e \u0434\u0435\u043b\u044e\u0441\u044c.<\/p>\n<p>\u0417\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043f\u0435\u0440\u0432\u043e\u0435 \u043c\u0435\u0441\u0442\u043e, \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\n<\/th>\n<th>\n<p align=\"left\">\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u0440\u0435\u043c\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">5 \u043c\u0438\u043d\u0443\u0442 10 \u0441\u0435\u043a\u0443\u043d\u0434<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">0.49 $<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0422\u043e\u043a\u0435\u043d\u044b<\/p>\n<\/td>\n<td>\n<p align=\"left\">690 \u0442\u044b\u0441<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/44\/ee\/65\/44ee651405d9010aa7c9187c2ea71c7d.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/44\/ee\/65\/44ee651405d9010aa7c9187c2ea71c7d.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/44\/ee\/65\/44ee651405d9010aa7c9187c2ea71c7d.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0431\u044b\u043b \u043f\u043e\u043b\u0443\u0447\u0435\u043d \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e, \u044f \u0443\u0448\u0435\u043b \u0437\u0430 \u043a\u043e\u0444\u0435, \u0432\u0435\u0440\u043d\u0443\u043b\u0441\u044f, \u0438 \u0432\u0441\u0451 \u0443\u0436\u0435 \u0431\u044b\u043b\u043e \u0433\u043e\u0442\u043e\u0432\u043e, \u043f\u0440\u0438\u0437\u043d\u0430\u044e\u0441\u044c, \u044f \u043d\u0435 \u043f\u043e\u0432\u0435\u0440\u0438\u043b \u0441\u043d\u0430\u0447\u0430\u043b\u0430. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a, \u043e\u0434\u0438\u043d \u0432 \u043e\u0434\u0438\u043d \u043a\u0430\u043a \u0443 \u043c\u0435\u043d\u044f!<\/p>\n<p>\u041a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u043d\u0430 \u0437\u0430\u0434\u0430\u0447\u0430. \u0418\u0418 \u0441\u0434\u0435\u043b\u0430\u043b \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u0443\u044e \u0442\u0443\u043b\u0443 \u043d\u0430 Swift, \u043a\u0443\u0434\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043b \u043f\u0430\u0440\u0441\u0435\u0440\u044b \u0447\u0435\u0440\u0435\u0437 SwiftPM. \u041a\u0430\u043a \u0432\u044b \u043f\u043e\u043c\u043d\u0438\u0442\u0435 <code>Ono<\/code> \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 SwiftPM, \u0438 \u0418\u0418 \u0441\u0434\u0435\u043b\u0430\u043b \u0438\u0437 \u043d\u0435\u0433\u043e \u0441\u0430\u0431 \u0442\u0430\u0440\u0433\u0435\u0442 \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043b \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043f\u0440\u043e\u0435\u043a\u0442. \u041f\u0440\u0438\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e \u043d\u0438\u0436\u0435 <code>Package.swift<\/code>:<\/p>\n<pre><code class=\"swift\">\/\/ swift-tools-version: 5.9import PackageDescriptionlet package = Package(    name: \"XMLBenchmark\",    platforms: [        .macOS(.v12)    ],    dependencies: [        .package(url: \"https:\/\/github.com\/tadija\/AEXML.git\", branch: \"master\"),        .package(url: \"https:\/\/github.com\/drmohundro\/SWXMLHash.git\", branch: \"main\"),        .package(url: \"https:\/\/github.com\/yahoojapan\/SwiftyXMLParser.git\", branch: \"master\"),        .package(url: \"https:\/\/github.com\/tid-kijyun\/Kanna.git\", branch: \"master\"),        .package(url: \"https:\/\/github.com\/cezheng\/Fuzi.git\", branch: \"master\"),        .package(url: \"https:\/\/github.com\/robbiehanson\/KissXML.git\", branch: \"master\")    ],    targets: [        .target(            name: \"Ono\",            dependencies: [],            path: \"Sources\/Ono\",            publicHeadersPath: \".\",            linkerSettings: [                .linkedLibrary(\"xml2\")            ]        ),        .executableTarget(            name: \"XMLBenchmark\",            dependencies: [                \"AEXML\",                \"SWXMLHash\",                \"SwiftyXMLParser\",                \"Kanna\",                \"Fuzi\",                \"KissXML\",                \"Ono\"            ]        ),    ])<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0427\u0442\u043e \u043c\u043d\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f, \u044d\u0442\u043e \u043a\u0430\u043a \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u0432\u0435\u0437\u0434\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u0430 <code>branch: \"master\"<\/code>, \u0445\u043e\u0440\u043e\u0448\u0438\u043c \u0442\u043e\u043d\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0445\u043e\u0447\u0443 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0443\u0441\u043e\u043c\u043d\u0438\u0442\u044c\u0441\u044f \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435, \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0435\u0441\u0442\u044c \u043d\u043e\u0442\u043a\u0430 \u0447\u0438\u0442\u0438\u043d\u0433\u0430, \u0438 Google (Gemini) \u043f\u0440\u043e\u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043b \u043c\u043e\u044e \u043f\u0435\u0440\u0432\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e \u0438 \u043a\u0430\u043a-\u0442\u043e \u0443 \u0441\u0435\u0431\u044f \u0443\u0436\u0435 \u043f\u0440\u043e\u0433\u043e\u043d\u044f\u043b \u044d\u0442\u043e\u0442 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a.<\/p>\n<h4>Gemini 3.1 Pro Preview (Xhigh)<\/h4>\n<p>\u0417\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0432\u0442\u043e\u0440\u043e\u0435 \u043c\u0435\u0441\u0442\u043e, \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\n<\/th>\n<th>\n<p align=\"left\">\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u0440\u0435\u043c\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">6 \u043c\u0438\u043d\u0443\u0442<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">0.86 $<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0422\u043e\u043a\u0435\u043d\u044b<\/p>\n<\/td>\n<td>\n<p align=\"left\">885 \u0442\u044b\u0441<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/93\/00\/68\/9300689052b281baaea116a604a7be9e.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/93\/00\/68\/9300689052b281baaea116a604a7be9e.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/93\/00\/68\/9300689052b281baaea116a604a7be9e.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436 \u043a\u0430\u043a \u0443 \u043c\u0435\u043d\u044f, \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c, \u0447\u0442\u043e \u0432 \u043c\u043e\u0435\u043c <code>Kanna<\/code> \u043f\u0430\u0440\u0441\u0435\u0440 \u0431\u044b\u043b \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 <code>Fuzi<\/code>, <code>KissXML<\/code> \u0438 <code>Ono<\/code>.<\/p>\n<p>\u041a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u043d\u0430 \u0437\u0430\u0434\u0430\u0447\u0430. \u0418\u0418 \u0442\u0430\u043a\u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u043b \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u0443\u044e \u0442\u0443\u043b\u0443 \u043d\u0430 Swift, \u043a\u0443\u0434\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043b \u043f\u0430\u0440\u0441\u0435\u0440\u044b \u0447\u0435\u0440\u0435\u0437 SwiftPM. \u0414\u043b\u044f <code>Ono<\/code> \u0418\u0418 \u0441\u043e\u0437\u0434\u0430\u043b\u0430 \u0435\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 <code>Package.swift<\/code>, \u0447\u0442\u043e \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u043a\u0440\u0443\u0442\u043e, \u044f \u0431\u044b, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0441\u0434\u0435\u043b\u0430\u043b \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435. \u041f\u0440\u0438\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e \u043d\u0438\u0436\u0435 <code>Package.swift<\/code> \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0437\u0434\u0430\u043b Gemini:<\/p>\n<pre><code class=\"swift\">\/\/ swift-tools-version: 5.9import PackageDescriptionlet package = Package(    name: \"XMLBenchmark\",    platforms: [        .macOS(.v12)    ],    dependencies: [        .package(url: \"https:\/\/github.com\/tadija\/AEXML.git\", from: \"4.6.1\"),        .package(url: \"https:\/\/github.com\/drmohundro\/SWXMLHash.git\", from: \"7.0.2\"),        .package(url: \"https:\/\/github.com\/yahoojapan\/SwiftyXMLParser.git\", from: \"5.6.0\"),        .package(url: \"https:\/\/github.com\/tid-kijyun\/Kanna.git\", from: \"5.3.0\"),        .package(url: \"https:\/\/github.com\/cezheng\/Fuzi.git\", from: \"3.1.3\"),        .package(path: \".\/Ono\"),        .package(url: \"https:\/\/github.com\/robbiehanson\/KissXML.git\", branch: \"master\")    ],    targets: [        .executableTarget(            name: \"XMLBenchmark\",            dependencies: [                \"AEXML\",                \"SWXMLHash\",                \"SwiftyXMLParser\",                \"Kanna\",                \"Fuzi\",                \"Ono\",                \"KissXML\"            ],            path: \"Sources\/XMLBenchmark\"        ),    ])<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u043a\u0430\u043a \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0441\u0441\u044b\u043b\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u043d\u043e\u043c\u0435\u0440\u0430 \u0432\u0435\u0440\u0441\u0438\u0439, \u0447\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f best practice \u0434\u043b\u044f SwiftPM, \u0436\u0438\u0440\u043d\u044b\u0439 \u043b\u0430\u0439\u043a.<\/p>\n<h4>GLM 5.1<\/h4>\n<p>\u0422\u0440\u0435\u0442\u044c\u0435 \u043c\u0435\u0441\u0442\u043e \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\n<\/th>\n<th>\n<p align=\"left\">\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u0440\u0435\u043c\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">15 \u043c\u0438\u043d\u0443\u0442<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">1.22 $<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0422\u043e\u043a\u0435\u043d\u044b<\/p>\n<\/td>\n<td>\n<p align=\"left\">3 \u043c\u043b\u043d 680 \u0442\u044b\u0441<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/50\/d8\/d2\/50d8d2db0df13a3ef33f6a5d870b2d34.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/50\/d8\/d2\/50d8d2db0df13a3ef33f6a5d870b2d34.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/50\/d8\/d2\/50d8d2db0df13a3ef33f6a5d870b2d34.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0412 3 \u0440\u0430\u0437\u0430 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435, \u0432 2 \u0440\u0430\u0437\u0430 \u0434\u043e\u0440\u043e\u0436\u0435 \u043f\u0435\u0440\u0432\u044b\u0445 \u0434\u0432\u0443\u0445 \u043f\u043e\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u0435\u0439. \u0412\u0441\u0435 \u043f\u0430\u0440\u0441\u0435\u0440\u044b \u0441\u043e\u0431\u0440\u0430\u043d\u044b \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u044b\u0439. \u0414\u043b\u044f <code>Ono<\/code> \u0442\u0430\u043a\u0436\u0435 \u0431\u044b\u043b \u0441\u043e\u0437\u0434\u0430\u043d \u0435\u0433\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 <code>Package.swift<\/code> \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u043b <code>Gemini 3.1 Pro Preview<\/code>, \u0437\u0430 \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043b\u0430\u0439\u043a. \u0412\u0435\u0440\u0441\u0438\u043e\u043d\u043d\u043e\u0441\u0442\u044c \u0442\u0430\u043a\u0436\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0440\u0430\u0441\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430. \u041f\u0440\u0438\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e \u043a\u043e\u0434 <code>Package.swift<\/code>:<\/p>\n<pre><code class=\"swift\">\/\/ swift-tools-version:5.9import PackageDescriptionlet package = Package(    name: \"XMLParserBenchmark\",    platforms: [.macOS(.v13)],    dependencies: [        .package(url: \"https:\/\/github.com\/tadija\/AEXML\", from: \"4.6.1\"),        .package(url: \"https:\/\/github.com\/drmohundro\/SWXMLHash\", from: \"7.0.2\"),        .package(url: \"https:\/\/github.com\/yahoojapan\/SwiftyXMLParser\", from: \"5.3.0\"),        .package(url: \"https:\/\/github.com\/tid-kijyun\/Kanna\", from: \"5.3.0\"),        .package(url: \"https:\/\/github.com\/cezheng\/Fuzi\", from: \"3.1.3\"),        .package(url: \"https:\/\/github.com\/robbiehanson\/KissXML\", from: \"5.3.1\"),        .package(path: \"Packages\/Ono\"),    ],    targets: [        .executableTarget(            name: \"XMLParserBenchmark\",            dependencies: [                \"AEXML\",                \"SWXMLHash\",                \"SwiftyXMLParser\",                \"Kanna\",                \"Fuzi\",                \"Ono\",                \"KissXML\",            ],            swiftSettings: [                .unsafeFlags([\"-swift-version\", \"5\"]),            ]        ),    ])<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041d\u0435 \u0437\u043d\u0430\u043b \u043f\u0440\u043e \u044d\u0442\u0443 \u043c\u043e\u0434\u0435\u043b\u044c, \u0441 \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u043e\u0447\u0435\u043d\u044c \u043a\u0440\u0443\u0442\u043e \u0441\u043f\u0440\u0430\u0432\u0438\u043b\u0430\u0441\u044c.<\/p>\n<h4>Qwen 3.6 Max Preview<\/h4>\n<p>\u0427\u0435\u0442\u0432\u0435\u0440\u0442\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\n<\/th>\n<th>\n<p align=\"left\">\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u0440\u0435\u043c\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">14 \u043c\u0438\u043d\u0443\u0442 7 \u0441\u0435\u043a\u0443\u043d\u0434<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">2.58 $<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0422\u043e\u043a\u0435\u043d\u044b<\/p>\n<\/td>\n<td>\n<p align=\"left\">2 \u043c\u043b\u043d 356 \u0442\u044b\u0441<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/46\/46\/0b\/46460beae9be35c1a08ea3065393d379.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/46\/46\/0b\/46460beae9be35c1a08ea3065393d379.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/46\/46\/0b\/46460beae9be35c1a08ea3065393d379.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0442\u0430\u043a\u0436\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 \u043c\u043e\u0439 \u0438 \u043b\u0443\u0447\u0448\u0435, \u0447\u0435\u043c \u0443 <code>Gemini 3.1 Pro Preview<\/code>, \u043d\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u044f \u0436\u0434\u0430\u043b \u0432 3 \u0440\u0430\u0437\u0430 \u0434\u043e\u043b\u044c\u0448\u0435 \u0438 \u0432 5 \u0440\u0430\u0437 \u0434\u043e\u0440\u043e\u0436\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0430\u0441\u043b\u0443\u0436\u0435\u043d\u043d\u043e\u0435 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043e\u0435 \u043c\u0435\u0441\u0442\u043e.<\/p>\n<p><code>Ono<\/code> \u043f\u0430\u0440\u0441\u0435\u0440 \u0442\u0430\u043a\u0436\u0435 \u0431\u044b\u043b \u0441\u0434\u0435\u043b\u0430\u043d \u043a\u0430\u043a \u0441\u0430\u0431 \u0442\u0430\u0440\u0433\u0435\u0442.<\/p>\n<pre><code class=\"swift\">\/\/ swift-tools-version: 6.0import PackageDescriptionlet package = Package(    name: \"XMLParserBenchmark\",    platforms: [.macOS(.v13)],    dependencies: [        .package(url: \"https:\/\/github.com\/tadija\/AEXML.git\", from: \"4.6.0\"),        .package(url: \"https:\/\/github.com\/drmohundro\/SWXMLHash.git\", from: \"7.0.0\"),        .package(url: \"https:\/\/github.com\/yahoojapan\/SwiftyXMLParser.git\", from: \"5.3.0\"),        .package(url: \"https:\/\/github.com\/tid-kijyun\/Kanna.git\", from: \"5.2.0\"),        .package(url: \"https:\/\/github.com\/cezheng\/Fuzi.git\", from: \"3.1.0\"),        .package(url: \"https:\/\/github.com\/robbiehanson\/KissXML.git\", from: \"5.3.0\"),    ],    targets: [        .target(            name: \"Ono\",            path: \"Sources\/Ono\",            publicHeadersPath: \".\",            cSettings: [                .unsafeFlags([\"-I\/usr\/include\/libxml2\"]),            ],            linkerSettings: [                .linkedLibrary(\"xml2\"),            ]        ),        .executableTarget(            name: \"XMLParserBenchmark\",            dependencies: [                .product(name: \"AEXML\", package: \"AEXML\"),                .product(name: \"SWXMLHash\", package: \"SWXMLHash\"),                .product(name: \"SwiftyXMLParser\", package: \"SwiftyXMLParser\"),                .product(name: \"Kanna\", package: \"Kanna\"),                .product(name: \"Fuzi\", package: \"Fuzi\"),                .product(name: \"KissXML\", package: \"KissXML\"),                \"Ono\",            ],            path: \"Sources\/XMLParserBenchmark\",            linkerSettings: [                .linkedLibrary(\"xml2\"),            ]        )    ])<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h4>Claude Opus 4.7 (Xhigh)<\/h4>\n<p>\u041f\u044f\u0442\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\n<\/th>\n<th>\n<p align=\"left\">\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u0440\u0435\u043c\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">20 \u043c\u0438\u043d\u0443\u0442 24 \u0441\u0435\u043a\u0443\u043d\u0434\u044b<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">2.92 $<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0422\u043e\u043a\u0435\u043d\u044b<\/p>\n<\/td>\n<td>\n<p align=\"left\">2 \u043c\u043b\u043d 795 \u0442\u044b\u0441<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/c7\/48\/a1\/c748a1698a79c6597fdee17900cc4119.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/c7\/48\/a1\/c748a1698a79c6597fdee17900cc4119.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/c7\/48\/a1\/c748a1698a79c6597fdee17900cc4119.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0413\u0440\u0430\u0444\u0438\u043a \u0442\u0430\u043a\u0436\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u044b\u0439, \u0447\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0440\u0430\u0434\u0443\u0435\u0442. \u0412\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 <code>Package.swift<\/code>:<\/p>\n<pre><code class=\"swift\">\/\/ swift-tools-version:5.9import PackageDescriptionlet package = Package(    name: \"XMLBenchmark\",    platforms: [        .macOS(.v12)    ],    products: [        .executable(name: \"XMLBenchmark\", targets: [\"XMLBenchmark\"])    ],    dependencies: [        .package(url: \"https:\/\/github.com\/tadija\/AEXML.git\", from: \"4.6.1\"),        .package(url: \"https:\/\/github.com\/drmohundro\/SWXMLHash.git\", from: \"7.0.2\"),        .package(url: \"https:\/\/github.com\/yahoojapan\/SwiftyXMLParser.git\", from: \"5.6.0\"),        .package(url: \"https:\/\/github.com\/tid-kijyun\/Kanna.git\", from: \"5.2.7\"),        .package(url: \"https:\/\/github.com\/cezheng\/Fuzi.git\", from: \"3.1.3\"),        .package(url: \"https:\/\/github.com\/robbiehanson\/KissXML.git\", from: \"5.3.3\"),    ],    targets: [        .target(            name: \"COno\",            path: \"Sources\/COno\",            publicHeadersPath: \"include\",            cSettings: [                .headerSearchPath(\"include\"),            ],            linkerSettings: [                .linkedLibrary(\"xml2\")            ]        ),        .executableTarget(            name: \"XMLBenchmark\",            dependencies: [                \"AEXML\",                \"SWXMLHash\",                \"SwiftyXMLParser\",                \"Kanna\",                \"Fuzi\",                \"KissXML\",                \"COno\",            ],            path: \"Sources\/XMLBenchmark\"        ),    ])<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0437\u0430\u0447\u0435\u043c-\u0442\u043e \u0418\u0418 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043b <code>Ono<\/code> \u0432 <code>COno<\/code>, \u0437\u0430 \u044d\u0442\u043e \u043c\u0438\u043d\u0443\u0441, \u0437\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u043d\u043e\u0441\u0442\u044c \u0436\u0438\u0440\u043d\u044b\u0439 \u043b\u0430\u0439\u043a. \u041e\u0436\u0438\u0434\u0430\u043b \u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e, \u0434\u0443\u043c\u0430\u043b \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0432\u043e\u0435 \u0438\u043b\u0438 \u0432\u0442\u043e\u0440\u043e\u0435 \u043c\u0435\u0441\u0442\u043e, \u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u043a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c.<\/p>\n<h4>GPT 5.5 (Xhigh)<\/h4>\n<p>\u0428\u0435\u0441\u0442\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\n<\/th>\n<th>\n<p align=\"left\">\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u0440\u0435\u043c\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">15 \u043c\u0438\u043d\u0443\u0442<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">4.78 $<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0422\u043e\u043a\u0435\u043d\u044b<\/p>\n<\/td>\n<td>\n<p align=\"left\">4 \u043c\u043b\u043d 745 \u0442\u044b\u0441<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/45\/01\/18\/4501185deac99b6736cb60b3c67a7afd.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/45\/01\/18\/4501185deac99b6736cb60b3c67a7afd.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/45\/01\/18\/4501185deac99b6736cb60b3c67a7afd.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041e\u0447\u0435\u043d\u044c \u043f\u043b\u043e\u0445\u043e, \u0434\u043e\u043b\u0433\u043e, \u043e\u0447\u0435\u043d\u044c \u0434\u043e\u0440\u043e\u0433\u043e. \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <code>KissXML<\/code> \u043d\u0435 \u0441\u043c\u043e\u0433 \u0437\u0430\u0438\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 SwiftPM \u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u043b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e. \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <code>Ono<\/code> \u0441\u043e\u0431\u0440\u0430\u043b \u043a\u0430\u043a-\u0442\u043e \u043a\u0440\u0438\u0432\u043e \u0438\u043b\u0438 \u043a\u0440\u0438\u0432\u043e\u0439 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u0434\u043b\u044f \u043d\u0435\u0435, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0434\u043b\u044f \u043d\u0435\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u044b \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0447\u0442\u043e \u043e\u043d\u0430 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 <code>KissXML<\/code> \u0438 <code>Kanna<\/code>, \u0447\u0442\u043e \u043d\u0435\u0432\u0435\u0440\u043d\u043e. \u041f\u043e\u043b\u043d\u043e\u0435 \u0440\u0430\u0437\u043e\u0447\u0430\u0440\u043e\u0432\u0430\u043d\u0438\u0435. <code>Package.swift<\/code> \u0444\u0430\u0439\u043b:<\/p>\n<pre><code class=\"swift\">\/\/ swift-tools-version:6.0import PackageDescriptionlet macOSSDK = \"\/Applications\/Xcode.app\/Contents\/Developer\/Platforms\/MacOSX.platform\/Developer\/SDKs\/MacOSX26.4.sdk\"let libxml2IncludePath = \"\\(macOSSDK)\/usr\/include\/libxml2\"let package = Package(    name: \"XMLParserBenchmark\",    platforms: [        .macOS(.v14)    ],    dependencies: [        .package(url: \"https:\/\/github.com\/tadija\/AEXML.git\", exact: \"4.7.0\"),        .package(url: \"https:\/\/github.com\/drmohundro\/SWXMLHash.git\", exact: \"8.1.1\"),        .package(url: \"https:\/\/github.com\/yahoojapan\/SwiftyXMLParser.git\", exact: \"5.6.0\"),        .package(url: \"https:\/\/github.com\/tid-kijyun\/Kanna.git\", exact: \"6.1.0\"),        .package(url: \"https:\/\/github.com\/cezheng\/Fuzi.git\", exact: \"3.1.3\")    ],    targets: [        .target(            name: \"Ono\",            path: \"Vendor\/Ono\/Source\",            exclude: [\"Info.plist\"],            publicHeadersPath: \".\",            cSettings: [                .headerSearchPath(\".\"),                .unsafeFlags([\"-I\", libxml2IncludePath])            ],            linkerSettings: [                .linkedLibrary(\"xml2\")            ]        ),        .target(            name: \"KissXML\",            path: \"Vendor\/KissXML\/KissXML\",            exclude: [\"Info.plist\"],            publicHeadersPath: \".\",            cSettings: [                .headerSearchPath(\".\"),                .headerSearchPath(\"Additions\"),                .headerSearchPath(\"Categories\"),                .headerSearchPath(\"Private\"),                .unsafeFlags([\"-I\", libxml2IncludePath])            ],            linkerSettings: [                .linkedLibrary(\"xml2\")            ]        ),        .executableTarget(            name: \"XMLParserBenchmark\",            dependencies: [                \"AEXML\",                \"SWXMLHash\",                \"SwiftyXMLParser\",                \"Kanna\",                \"Fuzi\",                \"Ono\",                \"KissXML\"            ],            swiftSettings: [                .swiftLanguageMode(.v5)            ],            linkerSettings: [                .linkedLibrary(\"xml2\")            ]        )    ])<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h4>MiMo V2.5 Pro<\/h4>\n<p>\u0421\u043f\u043e\u0440\u043d\u043e\u0435 \u0441\u0435\u0434\u044c\u043c\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\n<\/th>\n<th>\n<p align=\"left\">\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u0440\u0435\u043c\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">1 \u0447\u0430\u0441 45 \u043c\u0438\u043d\u0443\u0442<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">0.69 $<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0422\u043e\u043a\u0435\u043d\u044b<\/p>\n<\/td>\n<td>\n<p align=\"left\">2 \u043c\u043b\u043d 874 \u0442\u044b\u0441<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/67\/87\/11\/6787117c60ba369f270a1f4b4e0bcadc.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/67\/87\/11\/6787117c60ba369f270a1f4b4e0bcadc.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/67\/87\/11\/6787117c60ba369f270a1f4b4e0bcadc.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0414\u0430, \u043f\u043e\u0447\u0442\u0438 2 \u0447\u0430\u0441\u0430. \u041f\u043e \u043b\u043e\u0433\u0430\u043c \u0438\u0437 <code>openrouter.ai<\/code> \u0437\u0430\u043b\u0438\u043f\u0430\u043b\u0430 \u0438\u043d\u043e\u0433\u0434\u0430 \u043d\u0430 10\u201320 \u043c\u0438\u043d\u0443\u0442 \u0438 \u043d\u0435 \u043e\u0431\u0449\u0430\u043b\u0430\u0441\u044c \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c. \u041d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 4\u2011\u0445 \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432 \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u0439, \u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u0430\u0440\u0441\u0435\u0440\u0430 \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u043b\u0441\u044f \u043f\u043e \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c. \u041d\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0438 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439 \u043f\u043e\u0445\u043e\u0436\u0438 \u043d\u0430 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u044b\u0439, \u0440\u0435\u0448\u0438\u043b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u044d\u0442\u0443 \u0418\u0418 \u0442\u0430\u043a\u0436\u0435 \u0432 \u0441\u043f\u0438\u0441\u043e\u043a, \u0442\u0430\u043a \u043a\u0430\u043a \u0418\u0418\u0448\u043a\u0430 \u0441\u043c\u043e\u0433\u043b\u0430 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u043f\u0430\u0440\u0441\u0435\u0440\u044b.<\/p>\n<p>\u0414\u043b\u044f <code>Ono<\/code> \u0442\u0430\u043a\u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u043b\u0430 \u0435\u0433\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 <code>Package.swift<\/code>, \u0447\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u0432\u0430\u043b\u044c\u043d\u043e:<\/p>\n<pre><code class=\"swift\">\/\/ swift-tools-version:5.9import PackageDescriptionlet package = Package(    name: \"XMLParserBenchmark\",    platforms: [.macOS(.v12)],    dependencies: [        .package(url: \"https:\/\/github.com\/tadija\/AEXML.git\", from: \"4.7.0\"),        .package(url: \"https:\/\/github.com\/drmohundro\/SWXMLHash.git\", from: \"7.0.0\"),        .package(url: \"https:\/\/github.com\/yahoojapan\/SwiftyXMLParser.git\", from: \"5.0.0\"),        .package(url: \"https:\/\/github.com\/tid-kijyun\/Kanna.git\", from: \"5.3.0\"),        .package(url: \"https:\/\/github.com\/cezheng\/Fuzi.git\", from: \"3.1.0\"),        .package(url: \"https:\/\/github.com\/robbiehanson\/KissXML.git\", from: \"5.3.0\"),        .package(path: \"Ono\"),    ],    targets: [        .executableTarget(            name: \"XMLParserBenchmark\",            dependencies: [                .product(name: \"AEXML\", package: \"AEXML\"),                .product(name: \"SWXMLHash\", package: \"SWXMLHash\"),                .product(name: \"SwiftyXMLParser\", package: \"SwiftyXMLParser\"),                .product(name: \"Kanna\", package: \"Kanna\"),                .product(name: \"Fuzi\", package: \"Fuzi\"),                .product(name: \"KissXML\", package: \"KissXML\"),                .product(name: \"Ono\", package: \"Ono\"),            ],            path: \"Sources\/XMLParserBenchmark\"        )    ])<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u044f \u0431\u044b \u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u044d\u0442\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u044c\u044e, \u043e\u0447\u0435\u043d\u044c \u0434\u043e\u043b\u0433\u043e (\u0445\u043e\u0442\u044c \u0438 \u0434\u0435\u0448\u0435\u0432\u043b\u0435 \u043c\u043d\u043e\u0433\u0438\u0445 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043e\u0432), \u0438 \u043c\u043e\u0436\u0435\u0442 \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u0439, \u043d\u043e \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043a\u043e\u0434.<\/p>\n<h3>\u0410\u0443\u0442\u0441\u0430\u0439\u0434\u0435\u0440\u044b \u2116 1<\/h3>\n<p>\u0422\u043e\u043b\u044c\u043a\u043e 7 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0432\u044b\u0448\u0435 \u0441\u043c\u043e\u0433\u043b\u0438 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u043f\u0430\u0440\u0441\u0435\u0440\u044b \u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u0441\u0445\u043e\u0436\u0438\u0435 \u0441 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u044b\u043c. \u041d\u0438\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0441\u043f\u0438\u0441\u043e\u043a \u043c\u043e\u0434\u0435\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043c\u043e\u0433\u043b\u0438 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e 6 \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432 \u0438\u0437 7, \u0442\u043e \u0435\u0441\u0442\u044c \u0441 \u0437\u0430\u0434\u0430\u043d\u0438\u0435\u043c \u0441\u043f\u0440\u0430\u0432\u0438\u043b\u0438\u0441\u044c \u043d\u0430 85.7%<\/p>\n<h4>Qwen 3.6 Plus<\/h4>\n<p>\u0412\u043e\u0441\u044c\u043c\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\n<\/th>\n<th>\n<p align=\"left\">\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u0440\u0435\u043c\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">17 \u043c\u0438\u043d\u0443\u0442 3 \u0441\u0435\u043a\u0443\u043d\u0434\u044b<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">2.54 $<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0422\u043e\u043a\u0435\u043d\u044b<\/p>\n<\/td>\n<td>\n<p align=\"left\">7 \u043c\u043b\u043d 690 \u0442\u044b\u0441<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/41\/a4\/dd\/41a4ddae4c8e2128910518723d1066c3.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/41\/a4\/dd\/41a4ddae4c8e2128910518723d1066c3.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/41\/a4\/dd\/41a4ddae4c8e2128910518723d1066c3.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041c\u043e\u0434\u0435\u043b\u044c \u043d\u0435 \u0441\u0442\u0430\u043b\u0430 \u043f\u0430\u0440\u0438\u0442\u044c\u0441\u044f \u0441\u043e \u0441\u0431\u043e\u0440\u043a\u043e\u0439 <code>Ono<\/code> \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0431\u0440\u0430\u043b\u0430 \u043b\u0438\u0431\u0443 \u0438\u0437 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430. \u0422\u0430\u043a\u0436\u0435 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u0441\u043e\u0437\u0434\u0430\u043d \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a <code>Kanna<\/code> \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u0447\u0435\u043c <code>SWXMLHash<\/code>, \u0447\u0442\u043e \u0431\u044b\u0442\u044c \u043d\u0435 \u043c\u043e\u0436\u0435\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0443 \u044d\u0442\u0438\u0445 \u0431\u0438\u0431\u0438\u043e\u0442\u0435\u043a \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u043d\u044b\u0435 xml \u0434\u0432\u0438\u0436\u043a\u0438. \u0422\u043e \u0435\u0441\u0442\u044c \u0437\u0430 \u044d\u0442\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u044c\u043d\u043e \u0442\u043e\u0447\u043d\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c, \u0447\u0442\u043e \u043e\u043d\u0430 \u043f\u0438\u0448\u0435\u0442.<\/p>\n<p>\u041e\u0447\u0435\u043d\u044c \u0434\u043e\u0440\u043e\u0433\u043e \u0438 \u0434\u043e\u043b\u0433\u043e (\u043a\u0430\u043a Claude Opus 4.7), \u043d\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0445\u0443\u0436\u0435. \u0418\u043d\u0430\u0447\u0435 \u043b\u0443\u0447\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>Qwen 3.6 Max Preview<\/code>, \u043f\u0440\u0438 \u0442\u043e\u0439 \u0436\u0435 \u0446\u0435\u043d\u0435 \u0438 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043b\u0443\u0447\u0448\u0435.<\/p>\n<pre><code class=\"swift\">\/\/ swift-tools-version: 5.9import PackageDescriptionlet package = Package(    name: \"XmlParserBenchmark\",    platforms: [.macOS(.v14)],    products: [        .executable(name: \"XmlParserBenchmark\", targets: [\"XmlParserBenchmark\"])    ],    dependencies: [        .package(url: \"https:\/\/github.com\/tadija\/AEXML.git\", from: \"4.7.0\"),        .package(url: \"https:\/\/github.com\/drmohundro\/SWXMLHash.git\", from: \"7.0.0\"),        .package(url: \"https:\/\/github.com\/yahoojapan\/SwiftyXMLParser.git\", from: \"5.6.0\"),        .package(url: \"https:\/\/github.com\/tid-kijyun\/Kanna.git\", from: \"6.0.0\"),        .package(url: \"https:\/\/github.com\/cezheng\/Fuzi.git\", from: \"3.0.0\"),        .package(url: \"https:\/\/github.com\/robbiehanson\/KissXML.git\", from: \"5.3.0\"),    ],    targets: [        .executableTarget(            name: \"XmlParserBenchmark\",            dependencies: [                \"AEXML\",                \"SWXMLHash\",                \"SwiftyXMLParser\",                \"Kanna\",                \"Fuzi\",                \"KissXML\",            ],            swiftSettings: [                .unsafeFlags([\"-I\/usr\/include\/libxml2\"]),            ],            linkerSettings: [                .linkedLibrary(\"xml2\"),            ]        ),    ])<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h4>DeepSeek V4 Pro<\/h4>\n<p>\u042f \u0445\u043e\u0442\u0435\u043b \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u0443 \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u044b\u0448\u0435 <code>Qwen 3.6 Plus<\/code> \u0442\u0430\u043a \u043a\u0430\u043a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043b\u0443\u0447\u0448\u0435 (\u043e\u0447\u0435\u043d\u044c \u0441\u0445\u043e\u0436 \u0441 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u044b\u043c), \u043d\u043e \u0437\u0430\u0434\u0430\u0447\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0430\u0441\u044c \u043d\u0435\u0432\u044b\u043d\u043e\u0441\u0438\u043c\u043e \u0434\u043e\u043b\u0433\u043e.<\/p>\n<p>\u0414\u0435\u0432\u044f\u0442\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\n<\/th>\n<th>\n<p align=\"left\">\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u0440\u0435\u043c\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">1 \u0447\u0430\u0441 42 \u043c\u0438\u043d\u0443\u0442\u044b<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">2.34 $<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0422\u043e\u043a\u0435\u043d\u044b<\/p>\n<\/td>\n<td>\n<p align=\"left\">5 \u043c\u043b\u043d 650 \u0442\u044b\u0441<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/b5\/70\/24\/b5702420889e467485f2e3b0d1ac95db.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/b5\/70\/24\/b5702420889e467485f2e3b0d1ac95db.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/b5\/70\/24\/b5702420889e467485f2e3b0d1ac95db.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0413\u0440\u0430\u0444\u0438\u043a \u0441\u0445\u043e\u0436 \u0441 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u044b\u043c, \u043d\u043e \u0434\u043e\u043b\u0433\u043e\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 (\u043f\u043e\u0447\u0442\u0438 \u0434\u0432\u0430 \u0447\u0430\u0441\u0430), \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u043f\u043e\u0447\u0442\u0438 \u043a\u0430\u043a \u0443 Claude Opus, \u0438 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u043d\u0435 \u0441\u043c\u043e\u0433\u043b\u0430 \u0441\u043e\u0431\u0440\u0430\u0442\u044c <code>KissXML<\/code>, \u0445\u043e\u0442\u044f \u043e\u043d\u0430 \u0438\u043c\u0435\u0435\u0442 SwiftPM, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u043b\u0430 \u0438 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0430 <code>Ono<\/code> \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u044d\u0442\u043e\u043c \u043c\u0435\u0441\u0442\u0435.<\/p>\n<pre><code class=\"swift\">\/\/ swift-tools-version:6.0import PackageDescriptionlet package = Package(    name: \"XMLBenchmark\",    platforms: [.macOS(.v13)],    dependencies: [        .package(url: \"https:\/\/github.com\/tadija\/AEXML.git\", from: \"4.7.0\"),        .package(url: \"https:\/\/github.com\/drmohundro\/SWXMLHash.git\", from: \"8.0.0\"),        .package(url: \"https:\/\/github.com\/yahoojapan\/SwiftyXMLParser.git\", from: \"5.6.0\"),        .package(url: \"https:\/\/github.com\/tid-kijyun\/Kanna.git\", from: \"5.3.0\"),        .package(url: \"https:\/\/github.com\/cezheng\/Fuzi.git\", from: \"3.1.0\"),        .package(path: \"LocalPackages\/Ono\"),    ],    targets: [        .executableTarget(            name: \"Benchmark\",            dependencies: [                .product(name: \"AEXML\", package: \"AEXML\"),                .product(name: \"SWXMLHash\", package: \"SWXMLHash\"),                .product(name: \"SwiftyXMLParser\", package: \"SwiftyXMLParser\"),                .product(name: \"Kanna\", package: \"Kanna\"),                .product(name: \"Fuzi\", package: \"Fuzi\"),                .product(name: \"Ono\", package: \"Ono\"),            ],            path: \"Sources\/Benchmark\"        ),    ])<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u043e\u043a\u0430, \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u0434\u043b\u044f \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u0435\u0440\u0435\u043e\u0446\u0435\u043d\u0435\u043d\u0430. \u041d\u043e \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u043d\u0443, \u0441\u0430\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u043c.<\/p>\n<h4>Kimi K2.6<\/h4>\n<p>\u0414\u0435\u0441\u044f\u0442\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\n<\/th>\n<th>\n<p align=\"left\">\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u0440\u0435\u043c\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">1 \u0447\u0430\u0441 30 \u043c\u0438\u043d\u0443\u0442<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">2.28 $<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0422\u043e\u043a\u0435\u043d\u044b<\/p>\n<\/td>\n<td>\n<p align=\"left\">6 \u043c\u043b\u043d 810 \u0442\u044b\u0441<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/ed\/87\/09\/ed87098f41a72480be3e348060cd8e47.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/ed\/87\/09\/ed87098f41a72480be3e348060cd8e47.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/ed\/87\/09\/ed87098f41a72480be3e348060cd8e47.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041f\u043e\u043b\u0442\u043e\u0440\u0430 \u0447\u0430\u0441\u0430 \u043d\u0430 \u0437\u0430\u0434\u0430\u0447\u0443! \u041f\u043e \u0446\u0435\u043d\u0435 \u043a\u0430\u043a Claude Opus 4.7, \u043e\u0434\u043d\u0430 \u0438\u0437 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0438\u043b\u0438 \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0435 \u0441\u043c\u043e\u0433\u043b\u0430 \u0441\u043e\u0431\u0440\u0430\u0442\u044c. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0434\u043b\u044f <code>KissXML<\/code> \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0435\u043d, \u0442\u0430\u043a \u043a\u0430\u043a \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u0447\u0435\u043c <code>Kanna<\/code>, \u0447\u0442\u043e \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c.<\/p>\n<pre><code class=\"swift\">\/\/ swift-tools-version:5.9import PackageDescriptionlet package = Package(    name: \"XMLParserBenchmark\",    platforms: [.macOS(.v13)],    dependencies: [        .package(url: \"https:\/\/github.com\/tadija\/AEXML.git\", from: \"4.0.0\"),        .package(url: \"https:\/\/github.com\/drmohundro\/SWXMLHash.git\", from: \"7.0.0\"),        .package(url: \"https:\/\/github.com\/yahoojapan\/SwiftyXMLParser.git\", from: \"5.0.0\"),        .package(url: \"https:\/\/github.com\/tid-kijyun\/Kanna.git\", from: \"5.0.0\"),        .package(url: \"https:\/\/github.com\/cezheng\/Fuzi.git\", from: \"3.0.0\"),        \/\/ Ono: will be added as local target since upstream lacks Package.swift        .package(url: \"https:\/\/github.com\/robbiehanson\/KissXML.git\", from: \"5.0.0\"),    ],    targets: [        .executableTarget(            name: \"XMLParserBenchmark\",            dependencies: [                .product(name: \"AEXML\", package: \"AEXML\"),                .product(name: \"SWXMLHash\", package: \"SWXMLHash\"),                .product(name: \"SwiftyXMLParser\", package: \"SwiftyXMLParser\"),                .product(name: \"Kanna\", package: \"Kanna\"),                .product(name: \"Fuzi\", package: \"Fuzi\"),                \/\/ Ono: will be added as local target                .product(name: \"KissXML\", package: \"KissXML\"),            ]        )    ])<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439, \u0447\u0442\u043e <code>Ono<\/code> \u043f\u043e\u0442\u043e\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e, \u043d\u043e \u0432\u0438\u0434\u0438\u043c\u043e, \u044d\u0442\u043e \u0433\u0434\u0435-\u0442\u043e \u0437\u0430\u0442\u0435\u0440\u044f\u043b\u043e\u0441\u044c \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442 \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0437\u0430\u0434\u0430\u0447, \u043d\u043e \u0434\u043b\u044f \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u044f \u0431\u044b \u043d\u0435 \u0441\u0442\u0430\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0435.<\/p>\n<h3>\u0410\u0443\u0442\u0441\u0430\u0439\u0434\u0435\u0440\u044b \u2116 2<\/h3>\n<p>\u041c\u043e\u0434\u0435\u043b\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043c\u043e\u0433\u043b\u0438 \u0441\u043e\u0431\u0440\u0430\u0442\u044c 6 \u0438\u0437 7 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a, \u043f\u043e\u0434\u043e\u0448\u043b\u0438 \u043a \u043a\u043e\u043d\u0446\u0443. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a, \u044d\u0442\u043e \u043a\u0442\u043e \u0441\u043c\u043e\u0433 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e Swift \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0442\u043e \u0435\u0441\u0442\u044c 5 \u0438\u0437 7 \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432 \u0438 \u043d\u0435 \u0441\u043c\u043e\u0433\u043b\u0438 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 Objective-C.<\/p>\n<h4>Gemini 3.1 Flash Lite (Xhigh)<\/h4>\n<p>\u041e\u0434\u0438\u043d\u043d\u0430\u0434\u0446\u0430\u0442\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\n<\/th>\n<th>\n<p align=\"left\">\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u0440\u0435\u043c\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">4 \u043c\u0438\u043d\u0443\u0442\u044b<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">0.05 $<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0422\u043e\u043a\u0435\u043d\u044b<\/p>\n<\/td>\n<td>\n<p align=\"left\">392 \u0442\u044b\u0441<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/61\/0c\/be\/610cbe9566217bf414401af06260c0ee.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/61\/0c\/be\/610cbe9566217bf414401af06260c0ee.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/61\/0c\/be\/610cbe9566217bf414401af06260c0ee.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0424\u0435\u043d\u043e\u043c\u0435\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u0434\u0435\u043b\u0430\u043b\u0430 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u0437\u0430 4 \u043c\u0438\u043d\u0443\u0442\u044b \u0438 \u0432\u0441\u0435\u0433\u043e \u0437\u0430 5 \u0446\u0435\u043d\u0442\u043e\u0432! \u0416\u0430\u043b\u044c, \u0447\u0442\u043e \u043d\u0435 \u0441\u043c\u043e\u0433\u043b\u0430 \u0441\u043e\u0431\u0440\u0430\u0442\u044c 2 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 Objective-C.<\/p>\n<pre><code class=\"swift\">\/\/ swift-tools-version: 6.3\/\/ The swift-tools-version declares the minimum version of Swift required to build this package.import PackageDescriptionlet package = Package(    name: \"benchmark\",    dependencies: [        .package(url: \"https:\/\/github.com\/tadija\/AEXML\", branch: \"master\"),        .package(url: \"https:\/\/github.com\/drmohundro\/SWXMLHash\", branch: \"main\"),        .package(url: \"https:\/\/github.com\/yahoojapan\/SwiftyXMLParser\", branch: \"master\"),        .package(url: \"https:\/\/github.com\/tid-kijyun\/Kanna\", branch: \"master\"),        .package(url: \"https:\/\/github.com\/cezheng\/Fuzi\", branch: \"master\"),    ],    targets: [        .executableTarget(            name: \"benchmark\",            dependencies: [                \"AEXML\",                \"SWXMLHash\",                \"SwiftyXMLParser\",                \"Kanna\",                \"Fuzi\",            ]        ),        .testTarget(            name: \"benchmarkTests\",            dependencies: [\"benchmark\"]        ),    ],    swiftLanguageModes: [.v6])<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h4>Grok 4.3<\/h4>\n<p>\u0414\u0432\u0435\u043d\u0430\u0434\u0446\u0430\u0442\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\n<\/th>\n<th>\n<p align=\"left\">\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u0440\u0435\u043c\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">4 \u043c\u0438\u043d\u0443\u0442\u044b<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">0.19 $<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0422\u043e\u043a\u0435\u043d\u044b<\/p>\n<\/td>\n<td>\n<p align=\"left\">489 \u0442\u044b\u0441<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/d9\/94\/c3\/d994c328c5c8296546aca7ae820f5834.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/d9\/94\/c3\/d994c328c5c8296546aca7ae820f5834.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/d9\/94\/c3\/d994c328c5c8296546aca7ae820f5834.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0411\u044b\u0441\u0442\u0440\u043e, \u0434\u0435\u0448\u0435\u0432\u043e, \u043d\u043e \u043d\u0435 \u0432\u0435\u0440\u043d\u043e. \u0421\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a, \u043d\u0430 \u0432\u0441\u0435\u0445 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430\u0445 <code>SwiftXMLParser<\/code> \u0441\u0430\u043c\u044b\u0439 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0439, \u0443 \u0434\u0430\u043d\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a. \u0422\u0430\u043a\u0436\u0435 <code>SWXMLHash<\/code> \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 <code>AEXML<\/code>, \u043d\u043e \u0442\u0443\u0442 \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u043d\u043e\u0432\u0430 \u043e\u0448\u0438\u0431\u043b\u0430\u0441\u044c. \u0417\u043d\u0430\u0447\u0438\u0442 \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0430 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u043a\u043e\u0434 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430 \u0438\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043d\u0430\u043f\u0443\u0442\u0430\u043b\u0430 \u0432 \u0433\u0440\u0430\u0444\u0438\u043a\u0435. \u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0434\u0430\u043d\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438, \u0435\u0441\u043b\u0438 \u0432\u0435\u0440\u0438\u0442\u044c \u043d\u0430\u0448\u0435\u043c\u0443 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0443, \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u043a\u043e\u0434, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043b\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0437\u0430\u043b\u0435\u0437\u0442\u044c \u0432 \u043d\u0435\u0433\u043e \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e \u0432\u0441\u0451 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e, \u0438\u043d\u0430\u0447\u0435 \u0435\u0441\u0442\u044c \u0448\u0430\u043d\u0441 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0435\u0432\u0435\u0440\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.<\/p>\n<p>\u041f\u0440\u0438\u0447\u0435\u043c <code>Package.swift<\/code> \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u043c:<\/p>\n<pre><code class=\"swift\">\/\/ swift-tools-version:5.9import PackageDescriptionlet package = Package(    name: \"XMLParserBenchmark\",    platforms: [.macOS(.v14)],    products: [        .executable(name: \"XMLParserBenchmark\", targets: [\"XMLParserBenchmark\"]),    ],    dependencies: [        .package(url: \"https:\/\/github.com\/tadija\/AEXML.git\", from: \"4.6.1\"),        .package(url: \"https:\/\/github.com\/drmohundro\/SWXMLHash.git\", from: \"5.0.0\"),        .package(url: \"https:\/\/github.com\/yahoojapan\/SwiftyXMLParser.git\", from: \"5.0.0\"),        .package(url: \"https:\/\/github.com\/tid-kijyun\/Kanna.git\", from: \"5.2.0\"),        .package(url: \"https:\/\/github.com\/cezheng\/Fuzi.git\", from: \"3.1.0\"),        .package(url: \"https:\/\/github.com\/robbiehanson\/KissXML.git\", from: \"5.1.2\"),    ],    targets: [        .executableTarget(            name: \"XMLParserBenchmark\",            dependencies: [                \"AEXML\",                \"SWXMLHash\",                \"SwiftyXMLParser\",                \"Kanna\",                \"Fuzi\",                \"KissXML\",            ]        ),    ])<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, <code>KissXML<\/code> \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u044d\u0442\u043e\u0439 \u043b\u0438\u0431\u044b \u043d\u0435\u0442 \u0432 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0435. \u041a\u0430\u043a \u0442\u0430\u043a\u043e\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c, \u043c\u043d\u0435 \u043d\u0435\u044f\u0441\u043d\u043e.<\/p>\n<h3>\u041f\u043e\u043b\u043d\u044b\u0439 \u043f\u0440\u043e\u0432\u0430\u043b<\/h3>\n<p>\u0421\u043f\u0438\u0441\u043e\u043a \u043c\u043e\u0434\u0435\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0441\u043c\u043e\u0433\u043b\u0438 \u0440\u0435\u0448\u0438\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0443.<\/p>\n<h4>MiniMax M2.7<\/h4>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\n<\/th>\n<th>\n<p align=\"left\">\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u0440\u0435\u043c\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">26 \u043c\u0438\u043d\u0443\u0442<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">1.23 $<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0422\u043e\u043a\u0435\u043d\u044b<\/p>\n<\/td>\n<td>\n<p align=\"left\">18 \u043c\u043b\u043d 600 \u0442\u044b\u0441<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/1d\/5b\/71\/1d5b7155dab2539bf565018cd4ecb905.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/1d\/5b\/71\/1d5b7155dab2539bf565018cd4ecb905.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/1d\/5b\/71\/1d5b7155dab2539bf565018cd4ecb905.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041c\u043e\u0434\u0435\u043b\u044c \u0441\u043c\u043e\u0433\u043b\u0430 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e 3 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438. 18 \u043c\u043b\u043d \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0431\u044b\u043b\u043e \u043f\u043e\u0442\u0440\u0430\u0447\u0435\u043d\u043e, \u044d\u0442\u043e \u0440\u0435\u043a\u043e\u0440\u0434 \u043f\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u044e. \u0425\u043e\u0440\u043e\u0448\u043e, \u0447\u0442\u043e \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u043b\u043e\u0441\u044c \u0432\u0441\u0435\u0433\u043e \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 1$<\/p>\n<h4>DeepSeek V4 Flash<\/h4>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\n<\/th>\n<th>\n<p align=\"left\">\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u0440\u0435\u043c\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">1 \u0447\u0430\u0441 15 \u043c\u0438\u043d\u0443\u0442<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">0.40 $<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0422\u043e\u043a\u0435\u043d\u044b<\/p>\n<\/td>\n<td>\n<p align=\"left\">3 \u043c\u043b\u043d 282 \u0442\u044b\u0441<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u043c\u043e\u0433\u043b\u0430 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0437\u0430 \u0447\u0430\u0441 \u0440\u0430\u0431\u043e\u0442\u044b, \u044f \u0432\u0440\u043e\u0434\u0435 \u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b, \u0442\u0430\u043a \u043a\u0430\u043a \u0443\u0441\u0442\u0430\u043b \u0436\u0434\u0430\u0442\u044c, \u0445\u043e\u0440\u043e\u0448\u043e, \u0447\u0442\u043e \u043f\u043e\u0447\u0442\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u0442\u043e\u0438\u043b\u043e \u043f\u043e \u043a\u0440\u0435\u0434\u0438\u0442\u0430\u043c.<\/p>\n<h4>Gemma 4 31B<\/h4>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\n<\/th>\n<th>\n<p align=\"left\">\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u0440\u0435\u043c\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">18 \u043c\u0438\u043d\u0443\u0442<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">0.19 $<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0422\u043e\u043a\u0435\u043d\u044b<\/p>\n<\/td>\n<td>\n<p align=\"left\">1 \u043c\u043b\u043d 305 \u0442\u044b\u0441<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0427\u0435\u0440\u0435\u0437 18 \u043c\u0438\u043d\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u044b, \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u043a\u0430\u0437\u0430\u043b\u0430, \u0447\u0442\u043e \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u043d\u0435\u0432\u0435\u0440\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043e.<\/p>\n<blockquote>\n<p>I am encountering a persistent issue with the Swift Package Manager where it fails to access the Package.swift manifest when resolving external dependencies, reporting that it doesn\u2019t exist even though it is present in the directory. This appears to be an environment-specific issue with the Swift toolchain or sandbox on the host machine.<\/p>\n<\/blockquote>\n<h4>Owl Alpha (Free)<\/h4>\n<p>\u041d\u0435 \u0437\u043d\u0430\u044e, \u0447\u0442\u043e \u0437\u0430 \u043c\u043e\u0434\u0435\u043b\u044c, \u043d\u043e \u0431\u044b\u043b\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0432\u044b\u0448\u043b\u0430 \u0432 \u043c\u0430\u0435 2026 \u0438 \u0438\u043c\u0435\u0435\u0442 1 \u0442\u0440\u0438\u043b\u043b\u0438\u043e\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432. \u0420\u0435\u0448\u0438\u043b \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\n<\/th>\n<th>\n<p align=\"left\">\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u0440\u0435\u043c\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">1 \u0447\u0430\u0441 5 \u043c\u0438\u043d\u0443\u0442<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">0 $<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0422\u043e\u043a\u0435\u043d\u044b<\/p>\n<\/td>\n<td>\n<p align=\"left\">2 \u043c\u043b\u043d 880 \u0442\u044b\u0441<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0411\u043e\u043b\u044c\u0448\u0435 \u0447\u0430\u0441\u0430 \u0447\u0442\u043e-\u0442\u043e \u043a\u043e\u043b\u0434\u043e\u0432\u0430\u043b\u0430, \u043d\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c.<\/p>\n<h4>Mistral Medium 3.5<\/h4>\n<p>\u041d\u0435 \u0437\u043d\u0430\u044e, \u0447\u0442\u043e \u0437\u0430 \u043c\u043e\u0434\u0435\u043b\u044c, \u043d\u043e \u0431\u044b\u043b\u0430 \u0432 \u0442\u043e\u043f\u0430\u0445, \u0432\u044b\u0448\u043b\u0430 \u0432 \u043c\u0430\u0435 2026, \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\n<\/th>\n<th>\n<p align=\"left\">\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u0440\u0435\u043c\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">23 \u043c\u0438\u043d\u0443\u0442\u044b<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">7.46 $<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0422\u043e\u043a\u0435\u043d\u044b<\/p>\n<\/td>\n<td>\n<p align=\"left\">4 \u043c\u043b\u043d 820 \u0442\u044b\u0441<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0421\u0430\u043c\u0430\u044f \u043d\u0435\u0430\u0434\u0435\u043a\u0432\u0430\u0442\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c. \u041d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u043b\u0430. \u041f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043b\u0435\u0437\u043b\u0430 \u0432 \u043b\u0438\u0447\u043d\u044b\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438, \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b, \u0432 iCloud, \u0432 Apple Music, \u043c\u0430\u043a \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043f\u0438\u0449\u0430\u043b, \u0447\u0442\u043e OpenCode \u043f\u0440\u043e\u0441\u0438\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0442\u043e \u043d\u0430 \u043e\u0434\u043d\u043e, \u0442\u043e \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0435. \u0421\u0442\u043e\u0438\u043b\u0430 \u0432 3 \u0440\u0430\u0437\u0430 \u0434\u043e\u0440\u043e\u0436\u0435 Claude Opus, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u0440\u0435\u0448\u0438\u043b\u0430 \u0434\u0430\u0436\u0435 \u0438 \u0447\u0430\u0441\u0442\u0438 \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<p>\u0414\u0435\u0440\u0436\u0438\u0442\u0435\u0441\u044c \u043f\u043e\u0434\u0430\u043b\u044c\u0448\u0435 \u043e\u0442 \u044d\u0442\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<h4>Claude Opus 4.7 (Fast)<\/h4>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\n<\/th>\n<th>\n<p align=\"left\">\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u0440\u0435\u043c\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">3 \u043c\u0438\u043d\u0443\u0442\u044b<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">10 $<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0422\u043e\u043a\u0435\u043d\u044b<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0421\u043e\u0436\u0440\u0430\u043b\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 10 \u0431\u0430\u043a\u0441\u043e\u0432 \u0437\u0430 3 \u043c\u0438\u043d\u0443\u0442\u044b \u0431\u0435\u0437 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432, \u043f\u0440\u043e\u0441\u0438\u043b\u0430 \u0435\u0449\u0435 \u0434\u0435\u043d\u0435\u0433 \u0434\u043e\u043a\u0438\u043d\u0443\u0442\u044c (Gemini \u0437\u0430 3 \u043c\u0438\u043d\u0443\u0442\u044b \u0443\u0436\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b). \u041d\u0430\u043c \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430\u043c \u0442\u0430\u043a\u043e\u0439 \u0418\u0418 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d.<\/p>\n<h4>GPT 5.5 Pro<\/h4>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\n<\/th>\n<th>\n<p align=\"left\">\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u0440\u0435\u043c\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">1 \u0447\u0430\u0441 5 \u043c\u0438\u043d\u0443\u0442<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">26.06 $<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0422\u043e\u043a\u0435\u043d\u044b<\/p>\n<\/td>\n<td>\n<p align=\"left\">728 \u0442\u044b\u0441<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0421\u0430\u043c\u0430\u044f \u0443\u0436\u0430\u0441\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c. \u0421\u043e\u0436\u0440\u0430\u043b\u0430 26 \u0434\u043e\u043b\u043b\u0430\u0440\u043e\u0432 \u0437\u0430 1 \u0447\u0430\u0441 \u0440\u0430\u0431\u043e\u0442\u044b \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u043b\u0430 \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e.<\/p>\n<p>\u042f \u043f\u043e\u0434\u0443\u043c\u0430\u043b, \u043c\u043e\u0436\u0435\u0442 \u0433\u043b\u044e\u043a \u0443 <code>openrouter.ai<\/code>, \u0447\u0435\u0440\u0435\u0437 \u0434\u0435\u043d\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u043b, \u043a\u043e\u0433\u0434\u0430 10 \u0431\u0430\u043a\u0441\u043e\u0432 \u0441\u0433\u043e\u0440\u0435\u043b\u043e \u0437\u0430 10 \u043c\u0438\u043d\u0443\u0442, \u0430 \u0432 \u0447\u0430\u0442\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441\u0430, \u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b. \u041f\u043e\u0442\u043e\u043c \u0447\u0435\u0440\u0435\u0437 \u0434\u0435\u043d\u044c \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0435\u0449\u0435 \u0440\u0430\u0437, \u0441\u043d\u043e\u0432\u0430 \u0447\u0435\u0440\u0435\u0437 10 \u043c\u0438\u043d\u0443\u0442 \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u043b\u043e\u0441\u044c 10 \u0434\u043e\u043b\u043b\u0430\u0440\u043e\u0432 \u0431\u0435\u0437 \u043a\u0430\u043a\u043e\u0433\u043e-\u043b\u0438\u0431\u043e \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441\u0430, \u0444\u0430\u0439\u043b\u044b \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043d\u0435 \u0431\u044b\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u0438\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u044b.<\/p>\n<p>\u041d\u0430\u043f\u0438\u0441\u0430\u043b \u0432 <code>openrouter.ai<\/code> \u043d\u0430 \u0432\u043e\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435, \u043d\u043e \u0432\u0442\u043e\u0440\u0443\u044e \u043d\u0435\u0434\u0435\u043b\u044e \u043e\u0442 \u043d\u0438\u0445 \u0442\u0438\u0448\u0438\u043d\u0430.<\/p>\n<h3>\u041f\u043e\u0434\u0432\u0435\u0434\u0435\u043c \u0438\u0442\u043e\u0433\u0438<\/h3>\n<p>\u0414\u0430\u043d\u043d\u044b\u0439 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u0432\u044b\u044f\u0432\u0438\u043b \u044f\u0432\u043d\u044b\u0445 \u0444\u0430\u0432\u043e\u0440\u0438\u0442\u043e\u0432 \u0438 \u044f\u0432\u043d\u044b\u0445 \u0430\u0443\u0442\u0441\u0430\u0439\u0434\u0435\u0440\u043e\u0432 \u0441\u0440\u0435\u0434\u0438 \u0418\u0418. \u0415\u0441\u043b\u0438 \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u0445, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0432\u044b\u0448\u0435, \u0442\u043e \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0430\u043c\u044b\u0445 \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0445 \u0438 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<ol>\n<li>\n<p>Gemini 3.1 Pro Preview<\/p>\n<\/li>\n<li>\n<p>GLM 5.1<\/p>\n<\/li>\n<li>\n<p>Qwen 3.6 Max Preview<\/p>\n<\/li>\n<li>\n<p>Claude Opus 4.7<\/p>\n<\/li>\n<li>\n<p>Gemini 3.1 Flash Lite<\/p>\n<\/li>\n<\/ol>\n<p>\u0415\u0441\u043b\u0438 \u044d\u0442\u0438\u0445 \u043f\u044f\u0442\u0438 \u0432\u0430\u043c \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438:<\/p>\n<ol start=\"6\">\n<li>\n<p>GPT 5.5<\/p>\n<\/li>\n<li>\n<p>DeepSeek V4 Pro (\u043e\u0447\u0435\u043d\u044c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0430\u044f)<\/p>\n<\/li>\n<\/ol>\n<p>\u042d\u0442\u043e \u0447\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0447\u0435\u0440\u0435\u0437 API KEY. \u0422\u0430\u043a \u043a\u0430\u043a \u043f\u043e\u0434\u043f\u0438\u0441\u043e\u0447\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0418\u0418 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0432\u044b\u0433\u043e\u0434\u043d\u0435\u0435, \u0442\u043e \u0443 \u043d\u0430\u0441 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0432\u0441\u0451 \u0442\u0430 \u0436\u0435 \u0442\u0440\u043e\u0439\u043a\u0430 \u0444\u0430\u0432\u043e\u0440\u0438\u0442\u043e\u0432, \u0447\u0442\u043e \u0438 \u0440\u0430\u043d\u044c\u0448\u0435, \u044d\u0442\u043e Claude Code, GPT + Codex \u0438 Gemini.<\/p>\n<p>\u043f\u0441. \u0418\u0418 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0434\u043b\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438, \u0432\u0441\u0451 \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u043f\u043e-\u043e\u043b\u0434\u0441\u043a\u0443\u043b\u044c\u043d\u043e\u043c\u0443 (\u043a\u0440\u043e\u043c\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0432 \u043b\u0435\u043d\u0442\u0435).<\/p>\n<p>\u043f\u04412. \u0427\u0430\u0441\u0442\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b \u0441\u043f\u043e\u0440 \u043f\u0440\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438, \u0447\u0442\u043e \u043e\u043d\u0438 \u0442\u0440\u0430\u0442\u044f\u0442 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u044b \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0437\u0430 \u043c\u043d\u043e\u0433\u043e \u0447\u0430\u0441\u043e\u0432 \u0438 \u0440\u0435\u0448\u0430\u044e\u0442 \u0437\u0430\u0434\u0430\u0447\u0438. \u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0442\u0435\u0441\u0442\u043e\u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438, \u0442\u043e \u043a\u043e\u043b-\u0432\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442 \u0445\u043e\u0440\u043e\u0448\u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435, \u043a\u0430\u043a Qwen 3.6 Plus \u0438\u0441\u0442\u0440\u0430\u0442\u0438\u043b \u043f\u043e\u0447\u0442\u0438 8 \u043c\u043b\u043d \u0442\u043e\u043a\u0435\u043d\u043e\u0432, \u043d\u043e \u044d\u0442\u043e \u0435\u0433\u043e \u043d\u0435 \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u043b\u043e \u043a \u043c\u043e\u0434\u0435\u043b\u044f\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u043b\u0438 1-2-3 \u043c\u043b\u043d \u0442\u043e\u043a\u0435\u043d\u043e\u0432.<\/p>\n<p>\u043f\u04413. \u041d\u0430 \u0432\u0441\u0435 \u0442\u0435\u0441\u0442\u044b \u0443\u0448\u043b\u043e 70$, \u0447\u0442\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0433\u0440\u0443\u0441\u0442\u043d\u043e.<\/p>\n<p>\u0412 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0435\u043d\u0438\u0435 \u0446\u0438\u0444\u0440 \u043f\u0440\u0438\u043a\u043b\u044b\u0434\u0432\u0430\u044e \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u044b \u0438\u0437 <code>openrouter.ai<\/code>:<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/78\/32\/60\/783260532173be0a9b1e04be082f3f18.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/78\/32\/60\/783260532173be0a9b1e04be082f3f18.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/78\/32\/60\/783260532173be0a9b1e04be082f3f18.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/65\/98\/37\/659837f02d68cb1eff5a7112b2f14e95.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/65\/98\/37\/659837f02d68cb1eff5a7112b2f14e95.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/65\/98\/37\/659837f02d68cb1eff5a7112b2f14e95.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<\/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=\"https:\/\/habr.com\/ru\/articles\/1035210\/\">https:\/\/habr.com\/ru\/articles\/1035210\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0418\u0418 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u044e\u0430\u043d\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u043f\u0440\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u0437\u0430\u0434\u0430\u0447\u0438.\u041d\u044e\u0430\u043d\u0441 \u043f\u0435\u0440\u0432\u044b\u0439, \u0440\u0430\u0437\u043d\u044b\u0435 \u044f\u0437\u044b\u043a\u0438 \u0443 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a:XML ParserRepositoryLanguageAEXMLtadija\/AEXMLSwiftSWXMLHashdrmohundro\/SWXMLHashSwiftSwiftyXMLParseryahoojapan\/SwiftyXMLParserSwiftKannatid-kijyun\/KannaSwiftFuzicezheng\/FuziSwiftOnomattt\/OnoObjective-CKissXMLrobbiehanson\/KissXMLObjective-C\u041d\u044e\u0430\u043d\u0441 \u0432\u0442\u043e\u0440\u043e\u0439, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0437\u043d\u044b\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 CocoaPods \u0438 SwiftPM, \u0447\u0442\u043e-\u0442\u043e \u043e\u0434\u043d\u043e \u0438\u043b\u0438 \u043e\u0431\u0430 \u0441\u0440\u0430\u0437\u0443:XML ParserRepositoryCocoaPodsSwiftPMAEXMLtadija\/AEXMLYesYesSWXMLHashdrmohundro\/SWXMLHashYesYesSwiftyXMLParseryahoojapan\/SwiftyXMLParserYesYesKannatid-kijyun\/KannaYesYesFuzicezheng\/FuziYesYesOnomattt\/OnoYesNoKissXMLrobbiehanson\/KissXMLYesYes\u041a\u0430\u043a \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446 \u0432\u044b\u0448\u0435, \u0434\u0432\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 Ono \u0438 KissXML \u0442\u0435\u043e\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0437\u0430\u043f\u0443\u0442\u0430\u0442\u044c \u0418\u0418, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043d\u0430 Objective-C, \u0430 Ono \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0430\u0440\u0430\u044f, \u0447\u0442\u043e \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 SwiftPM. \u0422\u0435\u043c \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u0418\u0418, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u043e\u0439\u0442\u0438 \u044d\u0442\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f, \u0441\u0432\u043e\u0435\u0433\u043e \u0440\u043e\u0434\u0430 \u0437\u0430\u0434\u0430\u043d\u0438\u0435 \u0441\u043e \u0437\u0432\u0435\u0437\u0434\u043e\u0447\u043a\u043e\u0439.\u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u043a\u0430\u043a \u044f \u0440\u0435\u0448\u0430\u043b \u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443. \u042f \u0441\u043e\u0437\u0434\u0430\u043b \u043f\u0443\u0441\u0442\u043e\u0439 iOS \u043f\u0440\u043e\u0435\u043a\u0442, \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0432\u0441\u0435 \u043f\u0430\u0440\u0441\u0435\u0440\u044b \u043a\u0430\u043a CocoaPods \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0435 \u0432\u0441\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b\u0438 SwiftPM. \u0412 iOS \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u043b \u043f\u0430\u0440\u0443 \u043a\u043d\u043e\u043f\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a. \u041c\u043d\u0435 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u044f \u044d\u0442\u0438 \u043a\u043d\u043e\u043f\u043a\u0438 \u0440\u0438\u0441\u0443\u044e \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u043d\u044c \u0443\u0436\u0435 \u043c\u043d\u043e\u0433\u043e \u043b\u0435\u0442.\u041f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u0418\u0418\u0448\u0435\u043a, \u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043b, \u0447\u0442\u043e \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0435 iOS \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d\u0438 \u043d\u0435 \u0441\u043c\u043e\u0433\u0443\u0442 \u043a\u043b\u0438\u043a\u0430\u0442\u044c UI, \u0430 \u0431\u0443\u0434\u0443\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u0443\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u0443 \u043f\u043e\u0434 macOS, \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 bash. \u0422\u0430\u043a \u043a\u0430\u043a \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0438\u0448\u0435\u0442\u0441\u044f \u043d\u0430 Swift, \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u044e, \u0447\u0442\u043e \u0418\u0418 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c SwiftPM \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432, \u043d\u043e \u0447\u0442\u043e \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 Ono, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 SwiftPM, \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0435 \u044f\u0441\u043d\u043e.\u041a\u0430\u043a \u044f \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u044e \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0440\u0435\u0439\u0442\u0438\u043d\u0433\u0422\u0430\u043a \u043a\u0430\u043a \u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442, \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u0432\u0430\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0443, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0431\u0438\u0437\u043d\u0435\u0441. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u0432\u043e\u0442 \u0442\u0430\u043a\u0438\u0435 \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0438 \u043e\u0446\u0435\u043d\u043a\u0438 \u0418\u0418 \u0431\u0443\u0434\u0443\u0442 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0440\u0435\u0439\u0442\u0438\u043d\u0433\u0430 (\u043e\u0442 \u0432\u0430\u0436\u043d\u043e\u0433\u043e \u043a \u043c\u0435\u043d\u0435\u0435 \u0432\u0430\u0436\u043d\u043e\u043c\u0443):\u041a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 (\u0434\u043e\u043b\u0436\u043d\u043e \u00b1 \u0441\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0441 \u043c\u043e\u0438\u043c\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438)\u0412\u0441\u0435 7 \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438\u0426\u0435\u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 (\u0434\u0430, \u0446\u0435\u043d\u0430 \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u043c\u0435\u0441\u0442\u0435, \u043f\u0443\u0441\u0442\u044c \u0431\u0438\u0437\u043d\u0435\u0441 \u043f\u043b\u0430\u0442\u0438\u0442, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u0432 \u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0430\u0445)\u0414\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0418\u0418\u041a\u0430\u0436\u0434\u0430\u044f \u0418\u0418 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0430\u0441\u044c \u0432 \u0441\u0432\u043e\u0435\u0439 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043b\u0435\u0436\u0430\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e 2 \u0444\u0430\u0439\u043b\u0430:\u0424\u0430\u0439\u043b \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 task.md \u0432 100 \u0441\u0442\u0440\u043e\u043a, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0431\u0435\u0437 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439, \u0431\u044b\u043b\u043e \u044f\u0432\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u043e, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u0446\u0435\u043b\u0438 \u043b\u044e\u0431\u044b\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430. \u0424\u0430\u0439\u043b \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0431\u044b\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043c\u043d\u043e\u0439, \u043f\u043e\u0442\u043e\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e GPT \u0435\u0433\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043b, \u0447\u0442\u043e\u0431\u044b \u0443 \u0418\u0418 \u0442\u043e\u0447\u043d\u043e \u043d\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u043b\u043e \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u043f\u043e \u0437\u0430\u0434\u0430\u0447\u0435.\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 XML \u0444\u0430\u0439\u043b \u0441 500\u043a \u0441\u0442\u0440\u043e\u043a, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a.\u0412 \u0437\u0430\u0434\u0430\u0447\u0435 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u043e, \u0447\u0442\u043e \u0432 \u043a\u043e\u043d\u0446\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u043a \u0441 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0431\u0430\u0440\u0430\u043c\u0438, \u0442\u043e \u0435\u0441\u0442\u044c \u0432\u0441\u0435 \u0433\u0440\u0430\u0444\u0438\u043a\u0438, \u0447\u0442\u043e \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u043d\u0438\u0436\u0435, \u044d\u0442\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0418\u0418 \u043f\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c \u0438\u0445 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b.\u041f\u0440\u043e\u043c\u043f\u0442 \u043d\u0435 \u0431\u0443\u0434\u0443 \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u043a \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f (\u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0445\u043e\u0442\u0435\u043b), \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u044e \u0438\u043c \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u043c\u0430\u0436\u043e\u0440\u043d\u044b\u0439 \u0432\u044b\u0445\u043e\u0434 \u0418\u0418, \u0438\u043d\u0430\u0447\u0435 \u0418\u0418\u0448\u043a\u0438 \u043d\u0430\u0439\u0434\u0443\u0442 \u0435\u0433\u043e \u0438 \u043d\u0430\u0443\u0447\u0430\u0442\u0441\u044f \u0440\u0435\u0448\u0430\u0442\u044c.Evn (\u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435)\u041b\u0438\u0447\u043d\u044b\u0439 \u043c\u0430\u043a\u0431\u0443\u043a \u0441 macOS 26Xcode 26 (git, xcodebuild, swift, swiftpm, clang, Apple SDK)\u0422\u0430\u043a\u0436\u0435 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0441\u0442\u043e\u044f\u0442 ruby \u0438 python \u0442\u0430\u043a \u043a\u0430\u043a \u0418\u0418 \u0447\u0430\u0441\u0442\u043e \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0422\u0430\u043a\u0436\u0435 curl, wget, jq\u042f\u0432\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043b \u0432 task.md, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438: \u041f\u0440\u043e\u0435\u043a\u0442\u0430\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u0430\u044f \/*\/Xcode\/*\/DerivedData\/tmp\/\u041a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0438\u0441\u044c \u0442\u0435\u0441\u0442\u044b\u042f \u0441\u043e\u0437\u0434\u0430\u043b \u0447\u0438\u0441\u0442\u044b\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u043d\u0430 openrouter.ai \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b OpenCode \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0418\u0418. \u0422\u0430\u043a \u043a\u0430\u043a \u0430\u043a\u043a \u043d\u043e\u0432\u044b\u0439, \u0442\u043e \u043d\u0430 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0435 \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0442\u0440\u0430\u0447\u0435\u043d\u043d\u044b\u0435 \u043a\u0440\u0435\u0434\u0438\u0442\u044b \u0438 \u0442\u043e\u043a\u0435\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438.\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u043e\u0434\u0438\u043d openrouter.ai \u043a\u043b\u044e\u0447 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0418\u0418 (\u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u043b \u0441\u0432\u043e\u0439 \u043b\u0438\u0447\u043d\u044b\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f GPT)\u0422\u0435\u0441\u0442\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0438\u0441\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0435\u0437\u0430\u0434\u0443\u0434\u043e\u0441\u0441\u0438\u0442\u044c openrouter.ai.\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0442\u0435\u0441\u0442\u043e\u0432\u0421\u043f\u0438\u0441\u043e\u043a \u0431\u0443\u0434\u0435\u0442 \u043e\u0442 \u043b\u0443\u0447\u0448\u0435\u0433\u043e \u043a \u0445\u0443\u0434\u0448\u0435\u043c\u0443, \u0447\u0442\u043e\u0431\u044b \u0441\u0440\u0430\u0437\u0443 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439 \u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0433\u0434\u0435 \u0418\u0418 \u0441\u0431\u0438\u043b\u0430\u0441\u044c \u0432 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u0441 \u043f\u043e\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u0435\u043c. \u0415\u0449\u0435 \u0440\u0430\u0437 \u043c\u043e\u0439 \u043b\u0438\u0447\u043d\u044b\u0439 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u043e\u0442 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u043c \u043e\u0442\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438:Gemini 3.1 Pro Preview Custom Tools (Xhigh)\u0421\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u043b \u044d\u0442\u0443 \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u043c\u0435\u0441\u0442\u043e Gemini 3.1 Pro Preview. \u041d\u043e \u043f\u043e \u043d\u0435\u0439 \u0435\u0441\u0442\u044c \u0442\u043e\u0436\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0442\u043e \u0434\u0435\u043b\u044e\u0441\u044c.\u0417\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043f\u0435\u0440\u0432\u043e\u0435 \u043c\u0435\u0441\u0442\u043e, \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438:\u0412\u0440\u0435\u043c\u044f5 \u043c\u0438\u043d\u0443\u0442 10 \u0441\u0435\u043a\u0443\u043d\u0434\u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c0.49 $\u0422\u043e\u043a\u0435\u043d\u044b690 \u0442\u044b\u0441\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0431\u044b\u043b \u043f\u043e\u043b\u0443\u0447\u0435\u043d \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e, \u044f \u0443\u0448\u0435\u043b \u0437\u0430 \u043a\u043e\u0444\u0435, \u0432\u0435\u0440\u043d\u0443\u043b\u0441\u044f, \u0438 \u0432\u0441\u0451 \u0443\u0436\u0435 \u0431\u044b\u043b\u043e \u0433\u043e\u0442\u043e\u0432\u043e, \u043f\u0440\u0438\u0437\u043d\u0430\u044e\u0441\u044c, \u044f \u043d\u0435 \u043f\u043e\u0432\u0435\u0440\u0438\u043b \u0441\u043d\u0430\u0447\u0430\u043b\u0430. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a, \u043e\u0434\u0438\u043d \u0432 \u043e\u0434\u0438\u043d \u043a\u0430\u043a \u0443 \u043c\u0435\u043d\u044f!\u041a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u043d\u0430 \u0437\u0430\u0434\u0430\u0447\u0430. \u0418\u0418 \u0441\u0434\u0435\u043b\u0430\u043b \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u0443\u044e \u0442\u0443\u043b\u0443 \u043d\u0430 Swift, \u043a\u0443\u0434\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043b \u043f\u0430\u0440\u0441\u0435\u0440\u044b \u0447\u0435\u0440\u0435\u0437 SwiftPM. \u041a\u0430\u043a \u0432\u044b \u043f\u043e\u043c\u043d\u0438\u0442\u0435 Ono \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 SwiftPM, \u0438 \u0418\u0418 \u0441\u0434\u0435\u043b\u0430\u043b \u0438\u0437 \u043d\u0435\u0433\u043e \u0441\u0430\u0431 \u0442\u0430\u0440\u0433\u0435\u0442 \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043b \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043f\u0440\u043e\u0435\u043a\u0442. \u041f\u0440\u0438\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e \u043d\u0438\u0436\u0435 Package.swift:\/\/ swift-tools-version: 5.9import PackageDescriptionlet package = Package(    name: &#171;XMLBenchmark&#187;,    platforms: [        .macOS(.v12)    ],    dependencies: [        .package(url: &#171;https:\/\/github.com\/tadija\/AEXML.git&#187;, branch: &#171;master&#187;),        .package(url: &#171;https:\/\/github.com\/drmohundro\/SWXMLHash.git&#187;, branch: &#171;main&#187;),        .package(url: &#171;https:\/\/github.com\/yahoojapan\/SwiftyXMLParser.git&#187;, branch: &#171;master&#187;),        .package(url: &#171;https:\/\/github.com\/tid-kijyun\/Kanna.git&#187;, branch: &#171;master&#187;),        .package(url: &#171;https:\/\/github.com\/cezheng\/Fuzi.git&#187;, branch: &#171;master&#187;),        .package(url: &#171;https:\/\/github.com\/robbiehanson\/KissXML.git&#187;, branch: &#171;master&#187;)    ],    targets: [        .target(            name: &#171;Ono&#187;,            dependencies: [],            path: &#171;Sources\/Ono&#187;,            publicHeadersPath: &#171;.&#187;,            linkerSettings: [                .linkedLibrary(&#171;xml2&#187;)            ]        ),        .executableTarget(            name: &#171;XMLBenchmark&#187;,            dependencies: [                &#171;AEXML&#187;,                &#171;SWXMLHash&#187;,                &#171;SwiftyXMLParser&#187;,                &#171;Kanna&#187;,                &#171;Fuzi&#187;,                &#171;KissXML&#187;,                &#171;Ono&#187;            ]        ),    ])\u0427\u0442\u043e \u043c\u043d\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f, \u044d\u0442\u043e \u043a\u0430\u043a \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u0432\u0435\u0437\u0434\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u0430 branch: &#171;master&#187;, \u0445\u043e\u0440\u043e\u0448\u0438\u043c \u0442\u043e\u043d\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438.\u0422\u0430\u043a\u0436\u0435 \u0445\u043e\u0447\u0443 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0443\u0441\u043e\u043c\u043d\u0438\u0442\u044c\u0441\u044f \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435, \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0435\u0441\u0442\u044c \u043d\u043e\u0442\u043a\u0430 \u0447\u0438\u0442\u0438\u043d\u0433\u0430, \u0438 Google (Gemini) \u043f\u0440\u043e\u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043b \u043c\u043e\u044e \u043f\u0435\u0440\u0432\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e \u0438 \u043a\u0430\u043a-\u0442\u043e \u0443 \u0441\u0435\u0431\u044f \u0443\u0436\u0435 \u043f\u0440\u043e\u0433\u043e\u043d\u044f\u043b \u044d\u0442\u043e\u0442 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a.Gemini 3.1 Pro Preview (Xhigh)\u0417\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0432\u0442\u043e\u0440\u043e\u0435 \u043c\u0435\u0441\u0442\u043e, \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438:\u0412\u0440\u0435\u043c\u044f6 \u043c\u0438\u043d\u0443\u0442\u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c0.86 $\u0422\u043e\u043a\u0435\u043d\u044b885 \u0442\u044b\u0441\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436 \u043a\u0430\u043a \u0443 \u043c\u0435\u043d\u044f, \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c, \u0447\u0442\u043e \u0432 \u043c\u043e\u0435\u043c Kanna \u043f\u0430\u0440\u0441\u0435\u0440 \u0431\u044b\u043b \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 Fuzi, KissXML \u0438 Ono.\u041a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u043d\u0430 \u0437\u0430\u0434\u0430\u0447\u0430. \u0418\u0418 \u0442\u0430\u043a\u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u043b \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u0443\u044e \u0442\u0443\u043b\u0443 \u043d\u0430 Swift, \u043a\u0443\u0434\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043b \u043f\u0430\u0440\u0441\u0435\u0440\u044b \u0447\u0435\u0440\u0435\u0437 SwiftPM. \u0414\u043b\u044f Ono \u0418\u0418 \u0441\u043e\u0437\u0434\u0430\u043b\u0430 \u0435\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 Package.swift, \u0447\u0442\u043e \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u043a\u0440\u0443\u0442\u043e, \u044f \u0431\u044b, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0441\u0434\u0435\u043b\u0430\u043b \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435. \u041f\u0440\u0438\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e \u043d\u0438\u0436\u0435 Package.swift \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0437\u0434\u0430\u043b Gemini:\/\/ swift-tools-version: 5.9import PackageDescriptionlet package = Package(    name: &#171;XMLBenchmark&#187;,    platforms: [        .macOS(.v12)    ],    dependencies: [        .package(url: &#171;https:\/\/github.com\/tadija\/AEXML.git&#187;, from: &#171;4.6.1&#187;),        .package(url: &#171;https:\/\/github.com\/drmohundro\/SWXMLHash.git&#187;, from: &#171;7.0.2&#187;),        .package(url: &#171;https:\/\/github.com\/yahoojapan\/SwiftyXMLParser.git&#187;, from: &#171;5.6.0&#187;),        .package(url: &#171;https:\/\/github.com\/tid-kijyun\/Kanna.git&#187;, from: &#171;5.3.0&#187;),        .package(url: &#171;https:\/\/github.com\/cezheng\/Fuzi.git&#187;, from: &#171;3.1.3&#187;),        .package(path: &#171;.\/Ono&#187;),        .package(url: &#171;https:\/\/github.com\/robbiehanson\/KissXML.git&#187;, branch: &#171;master&#187;)    ],    targets: [        .executableTarget(            name: &#171;XMLBenchmark&#187;,            dependencies: [                &#171;AEXML&#187;,                &#171;SWXMLHash&#187;,                &#171;SwiftyXMLParser&#187;,                &#171;Kanna&#187;,                &#171;Fuzi&#187;,                &#171;Ono&#187;,                &#171;KissXML&#187;            ],            path: &#171;Sources\/XMLBenchmark&#187;        ),    ])\u0422\u0430\u043a\u0436\u0435 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u043a\u0430\u043a \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0441\u0441\u044b\u043b\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u043d\u043e\u043c\u0435\u0440\u0430 \u0432\u0435\u0440\u0441\u0438\u0439, \u0447\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f best practice \u0434\u043b\u044f SwiftPM, \u0436\u0438\u0440\u043d\u044b\u0439 \u043b\u0430\u0439\u043a.GLM 5.1\u0422\u0440\u0435\u0442\u044c\u0435 \u043c\u0435\u0441\u0442\u043e \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438:\u0412\u0440\u0435\u043c\u044f15 \u043c\u0438\u043d\u0443\u0442\u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c1.22 $\u0422\u043e\u043a\u0435\u043d\u044b3 \u043c\u043b\u043d 680 \u0442\u044b\u0441\u0412 3 \u0440\u0430\u0437\u0430 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435, \u0432 2 \u0440\u0430\u0437\u0430 \u0434\u043e\u0440\u043e\u0436\u0435 \u043f\u0435\u0440\u0432\u044b\u0445 \u0434\u0432\u0443\u0445 \u043f\u043e\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u0435\u0439. \u0412\u0441\u0435 \u043f\u0430\u0440\u0441\u0435\u0440\u044b \u0441\u043e\u0431\u0440\u0430\u043d\u044b \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u044b\u0439. \u0414\u043b\u044f Ono \u0442\u0430\u043a\u0436\u0435 \u0431\u044b\u043b \u0441\u043e\u0437\u0434\u0430\u043d \u0435\u0433\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 Package.swift \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u043b Gemini 3.1 Pro Preview, \u0437\u0430 \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043b\u0430\u0439\u043a. \u0412\u0435\u0440\u0441\u0438\u043e\u043d\u043d\u043e\u0441\u0442\u044c \u0442\u0430\u043a\u0436\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0440\u0430\u0441\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430. \u041f\u0440\u0438\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e \u043a\u043e\u0434 Package.swift:\/\/ swift-tools-version:5.9import PackageDescriptionlet package = Package(    name: &#171;XMLParserBenchmark&#187;,    platforms: [.macOS(.v13)],    dependencies: [        .package(url: &#171;https:\/\/github.com\/tadija\/AEXML&#187;, from: &#171;4.6.1&#187;),        .package(url: &#171;https:\/\/github.com\/drmohundro\/SWXMLHash&#187;, from: &#171;7.0.2&#187;),        .package(url: &#171;https:\/\/github.com\/yahoojapan\/SwiftyXMLParser&#187;, from: &#171;5.3.0&#187;),        .package(url: &#171;https:\/\/github.com\/tid-kijyun\/Kanna&#187;, from: &#171;5.3.0&#187;),        .package(url: &#171;https:\/\/github.com\/cezheng\/Fuzi&#187;, from: &#171;3.1.3&#187;),        .package(url: &#171;https:\/\/github.com\/robbiehanson\/KissXML&#187;, from: &#171;5.3.1&#187;),        .package(path: &#171;Packages\/Ono&#187;),    ],    targets: [        .executableTarget(            name: &#171;XMLParserBenchmark&#187;,            dependencies: [                &#171;AEXML&#187;,                &#171;SWXMLHash&#187;,                &#171;SwiftyXMLParser&#187;,                &#171;Kanna&#187;,                &#171;Fuzi&#187;,                &#171;Ono&#187;,                &#171;KissXML&#187;,            ],            swiftSettings: [                .unsafeFlags([&#171;-swift-version&#187;, &#171;5&#187;]),            ]        ),    ])\u041d\u0435 \u0437\u043d\u0430\u043b \u043f\u0440\u043e \u044d\u0442\u0443 \u043c\u043e\u0434\u0435\u043b\u044c, \u0441 \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u043e\u0447\u0435\u043d\u044c \u043a\u0440\u0443\u0442\u043e \u0441\u043f\u0440\u0430\u0432\u0438\u043b\u0430\u0441\u044c.Qwen 3.6 Max Preview\u0427\u0435\u0442\u0432\u0435\u0440\u0442\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438:\u0412\u0440\u0435\u043c\u044f14 \u043c\u0438\u043d\u0443\u0442 7 \u0441\u0435\u043a\u0443\u043d\u0434\u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c2.58 $\u0422\u043e\u043a\u0435\u043d\u044b2 \u043c\u043b\u043d 356 \u0442\u044b\u0441\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0442\u0430\u043a\u0436\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 \u043c\u043e\u0439 \u0438 \u043b\u0443\u0447\u0448\u0435, \u0447\u0435\u043c \u0443 Gemini 3.1 Pro Preview, \u043d\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u044f \u0436\u0434\u0430\u043b \u0432 3 \u0440\u0430\u0437\u0430 \u0434\u043e\u043b\u044c\u0448\u0435 \u0438 \u0432 5 \u0440\u0430\u0437 \u0434\u043e\u0440\u043e\u0436\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0430\u0441\u043b\u0443\u0436\u0435\u043d\u043d\u043e\u0435 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043e\u0435 \u043c\u0435\u0441\u0442\u043e.Ono \u043f\u0430\u0440\u0441\u0435\u0440 \u0442\u0430\u043a\u0436\u0435 \u0431\u044b\u043b \u0441\u0434\u0435\u043b\u0430\u043d \u043a\u0430\u043a \u0441\u0430\u0431 \u0442\u0430\u0440\u0433\u0435\u0442.\/\/ swift-tools-version: 6.0import PackageDescriptionlet package = Package(    name: &#171;XMLParserBenchmark&#187;,    platforms: [.macOS(.v13)],    dependencies: [        .package(url: &#171;https:\/\/github.com\/tadija\/AEXML.git&#187;, from: &#171;4.6.0&#187;),&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-479743","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/479743","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=479743"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/479743\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=479743"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=479743"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=479743"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}