From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Arthur Miller Newsgroups: gmane.emacs.devel Subject: Image transforms as a benchmark? Date: Sun, 12 Sep 2021 13:45:39 +0200 Message-ID: Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="33378"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sun Sep 12 13:47:32 2021 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mPNxK-0008TF-OK for ged-emacs-devel@m.gmane-mx.org; Sun, 12 Sep 2021 13:47:31 +0200 Original-Received: from localhost ([::1]:46006 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mPNxI-0007XJ-OZ for ged-emacs-devel@m.gmane-mx.org; Sun, 12 Sep 2021 07:47:28 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:60580) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mPNvi-0006ri-Ga for emacs-devel@gnu.org; Sun, 12 Sep 2021 07:45:50 -0400 Original-Received: from mail-am6eur05olkn2045.outbound.protection.outlook.com ([40.92.91.45]:19809 helo=EUR05-AM6-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mPNvd-0006pw-8A for emacs-devel@gnu.org; Sun, 12 Sep 2021 07:45:49 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IoxZatcRdMMP3ve2j8NhU25LC/WKiANLiQUY2s/lyqIRUguXTeQ7ItQisRuJqiGe6zY1rVnCw5AzeyZi3/OVlIkpysgWE1Gfm99Z9mfhGhV/rpxRlkIfVBDSugGjUju+k7OPPFAmhgOEBRZWJXoMFYzl5Sx8kHlEt421nQr+HCmI0A52Y6hnTDrtHKXYQGFub9MDIybXUp+x8Hw3fgR+szBOpgXIuwUt18mhPbVdfFpTvCmdtBzxtffMlC+URUCkXAi0sZqPfLGnmsjJX4uZtoy1y9xxPycP4lqIxkkOdfvNfgWlbYMaWSAAQOuUbTOjacxrlJ16aM7YozhbA38C1g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=qSOoPlcPD+jmOULBp7FSK3x7JkJrzB99ewcJ28XUeVk=; b=JNWi6Ee1eYP/SOKvzsTlFxTEHS6Pkg+OR4BbGBCj27KenLwUR8yuIH+XW8C+p+c6T6Kcf5ShokDnKWFOrcE/tVWlBY+FVP/Gcfli2i+apGVyhUGSAL+lpMzgYiwteAXQoq7J1DrUIP2OqJWMLibh3we/5zsGbWIiSrXyhCXnqZNyLA97pY+wEUgs2GTUjaG8uFbCc5JQnC9ky3rQagqZxQKdVjD74QXnbuWr3Xumnvcza/ruOomjvpr/sIr+xsOuF1DXILVPO5QfWYMoi6HjeUMuUT0iCyzfutK9AjrTR8lC5/9XRRlGmL3sNM7n26HD5tBi3cEnjYI395cq7WteLw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=live.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qSOoPlcPD+jmOULBp7FSK3x7JkJrzB99ewcJ28XUeVk=; b=oO8g0/CNKxSrDV7xL3dH7EhepHj2Ue5JxzjrNts0JG4SpBKexXh9Dy+L+9A11DMB4XdzO3GVz68TJv2+ueXepNQJ4Qgoi9cZoV++WXVLT2i5gLto/B9zEws6w4mRWJbcON3VxFDuCFV7yAdwlw2DahFsbOc78Mn1ucP0Wdw3nji30Y2Zdj2w4k/xGqAdBUEcHHn30jdmGawFV+I/XHCieC/x1Yytoxx7pATPitCGb9UDTLmdGphTQVXSiAlKIvLokm8LMc2kWT8EzFW1Uob3NGgbV9IrKDbJm+oSM1BvI5KKprtcbEnsZReLWcxIvaXIctC1xBtVpO0MG2AnzUTW8Q== Original-Received: from AM9PR09MB4977.eurprd09.prod.outlook.com (2603:10a6:20b:304::20) by AM0PR09MB4292.eurprd09.prod.outlook.com (2603:10a6:20b:164::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4500.14; Sun, 12 Sep 2021 11:45:40 +0000 Original-Received: from AM9PR09MB4977.eurprd09.prod.outlook.com ([fe80::c55c:ece5:bed2:a9dc]) by AM9PR09MB4977.eurprd09.prod.outlook.com ([fe80::c55c:ece5:bed2:a9dc%8]) with mapi id 15.20.4500.018; Sun, 12 Sep 2021 11:45:40 +0000 X-TMN: [wkamXnO/HRYobEy3T9eBGR3I7tH2dNtc] X-ClientProxiedBy: AM6PR0502CA0068.eurprd05.prod.outlook.com (2603:10a6:20b:56::45) To AM9PR09MB4977.eurprd09.prod.outlook.com (2603:10a6:20b:304::20) X-Microsoft-Original-Message-ID: <87mtoi6mqk.fsf@live.com> X-MS-Exchange-MessageSentRepresentingType: 1 Original-Received: from pascal.homepc (81.232.177.30) by AM6PR0502CA0068.eurprd05.prod.outlook.com (2603:10a6:20b:56::45) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4500.14 via Frontend Transport; Sun, 12 Sep 2021 11:45:40 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: bfa45418-115c-4e55-95f8-08d975e2d85b X-MS-TrafficTypeDiagnostic: AM0PR09MB4292: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 2PTM+gVc9nx3jeyGHdWM/rxw2xAVbW9yngUnexAQzTEQ+zepd5y/RJpSg0xPkYtgxPzl+zG9nUKUMfoIfWuiCGRO1nwbpJH8GIWlZohpxAe/vjuJUFk+8ebDu6L/jweXc0phAdTOpGM4FhcU6iae7qtpkSUhVf47fScxYXIEaY1LE1V5kNAKNklS9e6X5j9x8160A8hr8BrddMgieOGhvVFsdz6AoULG7eDQyEnY356Atx31BNqQHCBv+2TPFUKbsKgkSFecr5kiCj5ifA0vmgUNeZTBRQMSDMAWKpvwgq0BuaRbQmEuvHdq4837+nVtc9pSC/Ql89nplc8ry3Y3nE2MVMDuCRHvcL2v8rHRtn0YkMHq3bRiCCl0PSVMSb1z0TtbZ55+WzEHbI/NzGHnbLb1HpeoqNX03y4OGAHQl7GAOwo6dPowMI4nuPk0NAgi X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: bk0OITz5Jr1j7ZJE1RaFUSTPVIEJOychRJ7GdoIo8PbfHM0by3CMDgADdUxRXdDbpFuGq+CW5XBkxUYib7i4pKITJ59+gNw/45gApB3IFNHnQ57jvx6xKVM+ZWOYyCY2vCvLgutQETpwh+cmMUOaGw== X-OriginatorOrg: sct-15-20-3174-20-msonline-outlook-72e6e.templateTenant X-MS-Exchange-CrossTenant-Network-Message-Id: bfa45418-115c-4e55-95f8-08d975e2d85b X-MS-Exchange-CrossTenant-AuthSource: AM9PR09MB4977.eurprd09.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2021 11:45:40.6259 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR09MB4292 Received-SPF: pass client-ip=40.92.91.45; envelope-from=arthur.miller@live.com; helo=EUR05-AM6-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:274588 Archived-At: I tried to make another little benchmark, I saw with optimization flags, that quite some loops have got unrolled and vectorized in image.c, so I wanted to see if it matters when doing some transforms on images. I tested so far just with svg. I wonder if image-rotate is handled completely by external libraries? I see no effect on performance, regardless of how many time I rotate some image. Is it same situation for scaling down? I see big difference when scaling up images so I guess that is handled by Emacs own code? #+begin_src emacs-lisp (require 'svg) (defun svg-position (image) "Return buffer position of the svg image." (let ((marker (cdr (assoc :image (car-safe (cdr image)))))) (when (markerp marker) (marker-position marker)))) (defun svg-image-rotate (svg &optional angle) (let ((image (image--get-image (svg-position svg)))) (setf (image-property image :rotation) (float (mod (+ (or (image-property image :rotation) 0) (or angle 90)) 360))))) (defun svg-increase-size () (with-temp-buffer (let ((svg (svg-create 10 10)) (max-image-size t)) (svg-rectangle svg 0 0 10 10) (svg-insert-image svg) (dotimes (_ 40) ;; use internal image--change-size ;; to bypass the optimization with idle-timer. (image--change-size (1+ (/ (prefix-numeric-value 2) 10.0)) (svg-position svg)))))) (defun svg-decrease-size () (with-temp-buffer (let ((svg (svg-create 10 10))) (svg-rectangle svg 0 0 10 10) (svg-insert-image svg) (dotimes (_ 20) (image--change-size (- 1 (/ (prefix-numeric-value 0.1) 10.0)) (svg-position svg)))))) #+end_src