HTML Preparation code:
x
 
1
<script type="text/javascript" src="https://publicstatic.tableausoftware.com/vizql/v_100001608191615/javascripts/mscorlib.js"></script>
2
<script type="text/javascript" src="https://publicstatic.tableausoftware.com/vizql/v_100001608191615/javascripts/vqlui.debug.js"></script>
3
4
<div id="testRoot">
5
  <span>1</span>
6
  <span>1</span>
7
  <span>1</span>
8
  <span>1</span>
9
  <span>1</span>
10
  <span>1</span>
11
  <span>1</span>
12
</div>
Script Preparation code:
 
function CleanUpFontFamilyStyles1(node) {
        var fontOjects = node.find('span');
        for (var ii = 0; ii < fontOjects.length; ++ii) {
            var obj = fontOjects.eq(ii);
            var fontFamily = obj.css('font-family');
            if (!ss.isNullOrEmptyString(fontFamily)) {
                var newCss = {};
                var fontFaces = [];
                fontFaces.push(fontFamily);
                if (ss.startsWithString(fontFamily, "'") || ss.startsWithString(fontFamily, '"')) {
                    fontFamily = fontFamily.substr(1, fontFamily.length - 2);
                }
                if (fontFaces.length > 1) {
                    newCss['font-family'] = fontFaces.join(',');
                    obj.css(newCss);
                }
            }
        }
    };
function CleanUpFontFamilyStyles2(node) {
        var fontOjects = node.find('span');
        
        fontOjects.each(function( index, obj ) {
            var fontFamily = obj.style.fontFamily;
            if (!ss.isNullOrEmptyString(fontFamily)) {
                var newCss = {};
                var fontFaces = [];
                fontFaces.push(fontFamily);
                if (ss.startsWithString(fontFamily, "'") || ss.startsWithString(fontFamily, '"')) {
                    fontFamily = fontFamily.substr(1, fontFamily.length - 2);
                }
                if (fontFaces.length > 1) {
                    newCss['font-family'] = fontFaces.join(',');
                    obj.css(newCss);
                }
            }
        });
    };
function CleanUpFontFamilyStyles3(node) {
        var fontOjects = node.find('span');
        
        fontOjects.each(function( index, obj ) {
            var fontFamily = window.getComputedStyle(obj).fontFamily;
            if (!ss.isNullOrEmptyString(fontFamily)) {
                var newCss = {};
                var fontFaces = [];
                fontFaces.push(fontFamily);
                if (ss.startsWithString(fontFamily, "'") || ss.startsWithString(fontFamily, '"')) {
                    fontFamily = fontFamily.substr(1, fontFamily.length - 2);
                }
                if (fontFaces.length > 1) {
                    newCss['font-family'] = fontFaces.join(',');
                    obj.css(newCss);
                }
            }
        });
    };
Tests:
  • Test 1

     
    CleanUpFontFamilyStyles1($("#testRoot"));
  • Optimized

     
    CleanUpFontFamilyStyles2($("#testRoot"));
  • with getComputedStyle

     
    CleanUpFontFamilyStyles3($("#testRoot"));
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    Test 1
    Optimized
    with getComputedStyle

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 8 years ago)
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36
Chrome 52 on Windows 7
View result in a separate tab
Test name Executions per second
Test 1 10298.2 Ops/sec
Optimized 72364.5 Ops/sec
with getComputedStyle 24684.0 Ops/sec