blob: f1b383395b6ef8ce6e98083c9a3412b2749aba8a [file]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
prelude: |
Warning[:experimental] = false
require "arrow"
require "arrow-format"
seed = 29
random = Random.new(seed)
n_columns = 100
n_rows = 10000
max_uint32 = 2 ** 32 - 1
arrays = n_columns.times.collect do |i|
if i.even?
Arrow::UInt32Array.new(n_rows.times.collect {random.rand(max_uint32)})
else
Arrow::BinaryArray.new(n_rows.times.collect {random.bytes(random.rand(10))})
end
end
table = Arrow::Table.new(arrays.collect.with_index {|array, i| [i, array]})
buffer = Arrow::ResizableBuffer.new(4096)
table.save(buffer, format: :arrow_streaming)
GC.start
GC.disable
benchmark:
"Arrow::Table.load": |
Arrow::Table.load(buffer, format: :arrow_streaming)
"Arrow::RecordBatchStreamReader": |
Arrow::BufferInputStream.open(buffer) do |input|
Arrow::RecordBatchStreamReader.new(input).each do
end
end
"ArrowFormat::StreamingReader": |
ArrowFormat::StreamingReader.new(buffer.data.to_s).each do
end