Title: [137630] trunk
- Revision
- 137630
- Author
- [email protected]
- Date
- 2012-12-13 11:32:23 -0800 (Thu, 13 Dec 2012)
Log Message
.: Added manual test for canvas setFont speed.
https://bugs.webkit.org/show_bug.cgi?id=104923
Reviewed by James Robinson.
* ManualTests/canvas-font-speed.html: Added.
Source/WebCore: CanvasRenderingContext2D::setFont() is slow.
https://bugs.webkit.org/show_bug.cgi?id=104923
Reviewed by James Robinson.
This spends most of its time in the CSS parser. As a first step,
early-out if the new value is the same as unparsed string for the current font.
See also http://code.google.com/p/chromium/issues/detail?id=164016.
Covered by existing tests in canvas/ and fast/canvas, and ManualTests/canvas-font-speed.html.
* html/canvas/CanvasRenderingContext2D.cpp:
(WebCore::CanvasRenderingContext2D::setFont):
Modified Paths
Added Paths
Diff
Modified: trunk/ChangeLog (137629 => 137630)
--- trunk/ChangeLog 2012-12-13 19:26:08 UTC (rev 137629)
+++ trunk/ChangeLog 2012-12-13 19:32:23 UTC (rev 137630)
@@ -1,3 +1,12 @@
+2012-12-13 Stephen White <[email protected]>
+
+ Added manual test for canvas setFont speed.
+ https://bugs.webkit.org/show_bug.cgi?id=104923
+
+ Reviewed by James Robinson.
+
+ * ManualTests/canvas-font-speed.html: Added.
+
2012-12-13 Jerome Pasion <[email protected]>
[Qt] Doc: Fixing Qt WebKit reference documentation.
Added: trunk/ManualTests/canvas-font-speed.html (0 => 137630)
--- trunk/ManualTests/canvas-font-speed.html (rev 0)
+++ trunk/ManualTests/canvas-font-speed.html 2012-12-13 19:32:23 UTC (rev 137630)
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<title>Canvas 2d Context Font Property Speed</title>
+</head>
+<body>
+ <canvas id='thecanvas' height=100 width=100/>
+ <script>
+ var canvas = document.getElementById('thecanvas');
+ var context = canvas.getContext('2d');
+ var t0 = Date.now();
+ for (var i = 0; i < 1000; i++) {
+ context.font = 'bold 13px Arial';
+ }
+ alert('Elapsed for 1000 font settings: ' + (Date.now() - t0));
+ </script>
+</body>
+</html>
Modified: trunk/Source/WebCore/ChangeLog (137629 => 137630)
--- trunk/Source/WebCore/ChangeLog 2012-12-13 19:26:08 UTC (rev 137629)
+++ trunk/Source/WebCore/ChangeLog 2012-12-13 19:32:23 UTC (rev 137630)
@@ -1,3 +1,19 @@
+2012-12-13 Stephen White <[email protected]>
+
+ CanvasRenderingContext2D::setFont() is slow.
+ https://bugs.webkit.org/show_bug.cgi?id=104923
+
+ Reviewed by James Robinson.
+
+ This spends most of its time in the CSS parser. As a first step,
+ early-out if the new value is the same as unparsed string for the current font.
+ See also http://code.google.com/p/chromium/issues/detail?id=164016.
+
+ Covered by existing tests in canvas/ and fast/canvas, and ManualTests/canvas-font-speed.html.
+
+ * html/canvas/CanvasRenderingContext2D.cpp:
+ (WebCore::CanvasRenderingContext2D::setFont):
+
2012-12-13 Parth Patel <[email protected]>, Max Feil <[email protected]>
Allow plugins to be disabled by shared library filename
Modified: trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp (137629 => 137630)
--- trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp 2012-12-13 19:26:08 UTC (rev 137629)
+++ trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp 2012-12-13 19:32:23 UTC (rev 137630)
@@ -2072,6 +2072,9 @@
void CanvasRenderingContext2D::setFont(const String& newFont)
{
+ if (newFont == state().m_unparsedFont && state().m_realizedFont)
+ return;
+
RefPtr<StylePropertySet> parsedStyle = StylePropertySet::create();
CSSParser::parseValue(parsedStyle.get(), CSSPropertyFont, newFont, true, strictToCSSParserMode(!m_usesCSSCompatibilityParseMode), 0);
if (parsedStyle->isEmpty())
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes