b64toBlob Timing - Version B

HTML

<table id='output'>
    <thead>
        <tr><th>
            data length &rarr;<br/>
            partitionSize &darr;
        </th></tr>
    </thead>
    <tbody>
    </tbody>  
</table>

CSS

td, th {
    text-align: right;
}

td {
    font-family: monospace;
}

JavaScript

function gen64Data(approximateLength) {
    return (new Array(0 | (approximateLength / 3))).join('ICAg');
}

function charCodeFromCharacter(c) {
    return c.charCodeAt(0);
}

function byteArrayFromByteCharacter(c) {
    return new Uint8Array([c.charCodeAt(0)]);
}

function b64toBlob(b64Data, contentType, partitionSize) {
    contentType = contentType || '';
    partitionSize = partitionSize || 1024;

    var byteCharacters = atob(b64Data);
    var byteArrays = [];

    for (var offset = 0; offset < byteCharacters.length; offset += partitionSize) {
        var slice = byteCharacters.slice(offset, offset + partitionSize);
        var byteNumbers = new Array(slice.length);
        for (var i = 0, l = slice.length; i < l; ++i) {
            byteNumbers.push(charCodeFromCharacter(slice[i]));
        }
        
        var byteArray = new Uint8Array(byteNumbers, contentType);
        
        byteArrays.push(byteNumbers);
    }

    var blob = new Blob(byteArrays, {type: contentType});
    return blob;
}

// --

var contentType = 'text/plain; charset=utf-8';

var dataLengths = [ 10000000,/*, 5000000, 2500000, 1000000*/ 100000 ];
var partitionSizes = [ Infinity, 100000, 10000, 1000, 500, 200, 125, 100, 75, 50 ];

var headerRow = document.querySelector('#output thead tr');
for (var i = 0; i < dataLengths[i]; i++) {
    var header = document.createElement('th');
    header.textContent = dataLengths[i];
    headerRow.appendChild(header);
}

var tableBody = document.querySelector('#output tbody');
for (var i = 0; i < partitionSizes.length; i++) {
    var row = document.createElement('tr');
    tableBody.appendChild(row);
    var header = document.createElement('th');
    header.textContent = partitionSizes[i];
    row.appendChild(header);
    
    for (var j = 0; j < dataLengths.length; j++) {
        var resultCell = document.createElement('td');
        resultCell.style.borderRight = '2px solid black';
        row.appendChild(resultCell);
        
        var b64Data =...