-
Notifications
You must be signed in to change notification settings - Fork 368
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Co-authored-by: Nikolaus West <nikolaus.west@me.com> Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com>
- Loading branch information
1 parent
bf27c8e
commit a479c0c
Showing
4 changed files
with
779 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
dataset/** |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,321 @@ | ||
# Copied from https://github.com/apple/ARKitScenes/blob/main/download_data.py | ||
# Licensing information: https://github.com/apple/ARKitScenes/blob/main/LICENSE | ||
import math | ||
import os | ||
import subprocess | ||
from pathlib import Path | ||
from typing import Final, List, Optional | ||
|
||
import pandas as pd | ||
|
||
ARkitscense_url = "https://docs-assets.developer.apple.com/ml-research/datasets/arkitscenes/v1" | ||
TRAINING: Final = "Training" | ||
VALIDATION: Final = "Validation" | ||
HIGRES_DEPTH_ASSET_NAME: Final = "highres_depth" | ||
POINT_CLOUDS_FOLDER: Final = "laser_scanner_point_clouds" | ||
|
||
AVAILABLE_RECORDINGS: Final = ["48458663", "42444949", "41069046", "41125722", "41125763", "42446167"] | ||
DATASET_DIR: Final = Path(os.path.dirname(__file__)) / "dataset" | ||
|
||
default_raw_dataset_assets = [ | ||
"mov", | ||
"annotation", | ||
"mesh", | ||
"confidence", | ||
"highres_depth", | ||
"lowres_depth", | ||
"lowres_wide.traj", | ||
"lowres_wide", | ||
"lowres_wide_intrinsics", | ||
"ultrawide", | ||
"ultrawide_intrinsics", | ||
"vga_wide", | ||
"vga_wide_intrinsics", | ||
] | ||
|
||
missing_3dod_assets_video_ids = [ | ||
"47334522", | ||
"47334523", | ||
"42897421", | ||
"45261582", | ||
"47333152", | ||
"47333155", | ||
"48458535", | ||
"48018733", | ||
"47429677", | ||
"48458541", | ||
"42897848", | ||
"47895482", | ||
"47333960", | ||
"47430089", | ||
"42899148", | ||
"42897612", | ||
"42899153", | ||
"42446164", | ||
"48018149", | ||
"47332198", | ||
"47334515", | ||
"45663223", | ||
"45663226", | ||
"45663227", | ||
] | ||
|
||
|
||
def raw_files(video_id: str, assets: List[str], metadata: pd.DataFrame) -> List[str]: | ||
file_names = [] | ||
for asset in assets: | ||
if HIGRES_DEPTH_ASSET_NAME == asset: | ||
in_upsampling = metadata.loc[metadata["video_id"] == float(video_id), ["is_in_upsampling"]].iat[0, 0] | ||
if not in_upsampling: | ||
print(f"Skipping asset {asset} for video_id {video_id} - Video not in upsampling dataset") | ||
continue # highres_depth asset only available for video ids from upsampling dataset | ||
|
||
if asset in [ | ||
"confidence", | ||
"highres_depth", | ||
"lowres_depth", | ||
"lowres_wide", | ||
"lowres_wide_intrinsics", | ||
"ultrawide", | ||
"ultrawide_intrinsics", | ||
"wide", | ||
"wide_intrinsics", | ||
"vga_wide", | ||
"vga_wide_intrinsics", | ||
]: | ||
file_names.append(asset + ".zip") | ||
elif asset == "mov": | ||
file_names.append(f"{video_id}.mov") | ||
elif asset == "mesh": | ||
if video_id not in missing_3dod_assets_video_ids: | ||
file_names.append(f"{video_id}_3dod_mesh.ply") | ||
elif asset == "annotation": | ||
if video_id not in missing_3dod_assets_video_ids: | ||
file_names.append(f"{video_id}_3dod_annotation.json") | ||
elif asset == "lowres_wide.traj": | ||
if video_id not in missing_3dod_assets_video_ids: | ||
file_names.append("lowres_wide.traj") | ||
else: | ||
raise Exception(f"No asset = {asset} in raw dataset") | ||
return file_names | ||
|
||
|
||
def download_file(url: str, file_name: str, dst: Path) -> bool: | ||
os.makedirs(dst, exist_ok=True) | ||
filepath = os.path.join(dst, file_name) | ||
|
||
if not os.path.isfile(filepath): | ||
command = f"curl {url} -o {file_name}.tmp --fail" | ||
print(f"Downloading file {filepath}") | ||
try: | ||
subprocess.check_call(command, shell=True, cwd=dst) | ||
except Exception as error: | ||
print(f"Error downloading {url}, error: {error}") | ||
return False | ||
os.rename(filepath + ".tmp", filepath) | ||
else: | ||
print(f"WARNING: skipping download of existing file: {filepath}") | ||
return True | ||
|
||
|
||
def unzip_file(file_name: str, dst: Path, keep_zip: bool = True) -> bool: | ||
filepath = os.path.join(dst, file_name) | ||
print(f"Unzipping zip file {filepath}") | ||
command = f"unzip -oq {filepath} -d {dst}" | ||
try: | ||
subprocess.check_call(command, shell=True) | ||
except Exception as error: | ||
print(f"Error unzipping {filepath}, error: {error}") | ||
return False | ||
if not keep_zip: | ||
os.remove(filepath) | ||
return True | ||
|
||
|
||
def download_laser_scanner_point_clouds_for_video(video_id: str, metadata: pd.DataFrame, download_dir: Path) -> None: | ||
video_metadata = metadata.loc[metadata["video_id"] == float(video_id)] | ||
visit_id = video_metadata["visit_id"].iat[0] | ||
has_laser_scanner_point_clouds = video_metadata["has_laser_scanner_point_clouds"].iat[0] | ||
|
||
if not has_laser_scanner_point_clouds: | ||
print(f"Warning: Laser scanner point clouds for video {video_id} are not available") | ||
return | ||
|
||
if math.isnan(visit_id) or not visit_id.is_integer(): | ||
print(f"Warning: Downloading laser scanner point clouds for video {video_id} failed - Bad visit id {visit_id}") | ||
return | ||
|
||
visit_id = int(visit_id) # Expecting an 8 digit integer | ||
laser_scanner_point_clouds_ids = laser_scanner_point_clouds_for_visit_id(visit_id, download_dir) | ||
|
||
for point_cloud_id in laser_scanner_point_clouds_ids: | ||
download_laser_scanner_point_clouds(point_cloud_id, visit_id, download_dir) | ||
|
||
|
||
def laser_scanner_point_clouds_for_visit_id(visit_id: int, download_dir: Path) -> List[str]: | ||
point_cloud_to_visit_id_mapping_filename = "laser_scanner_point_clouds_mapping.csv" | ||
if not os.path.exists(point_cloud_to_visit_id_mapping_filename): | ||
point_cloud_to_visit_id_mapping_url = ( | ||
f"{ARkitscense_url}/raw/laser_scanner_point_clouds/{point_cloud_to_visit_id_mapping_filename}" | ||
) | ||
if not download_file( | ||
point_cloud_to_visit_id_mapping_url, | ||
point_cloud_to_visit_id_mapping_filename, | ||
download_dir, | ||
): | ||
print( | ||
f"Error downloading point cloud for visit_id {visit_id} at location " | ||
f"{point_cloud_to_visit_id_mapping_url}" | ||
) | ||
return [] | ||
|
||
point_cloud_to_visit_id_mapping_filepath = os.path.join(download_dir, point_cloud_to_visit_id_mapping_filename) | ||
point_cloud_to_visit_id_mapping = pd.read_csv(point_cloud_to_visit_id_mapping_filepath) | ||
point_cloud_ids = point_cloud_to_visit_id_mapping.loc[ | ||
point_cloud_to_visit_id_mapping["visit_id"] == visit_id, | ||
["laser_scanner_point_clouds_id"], | ||
] | ||
point_cloud_ids_list = [scan_id[0] for scan_id in point_cloud_ids.values] | ||
|
||
return point_cloud_ids_list | ||
|
||
|
||
def download_laser_scanner_point_clouds(laser_scanner_point_cloud_id: str, visit_id: int, download_dir: Path) -> None: | ||
laser_scanner_point_clouds_folder_path = download_dir / POINT_CLOUDS_FOLDER / str(visit_id) | ||
os.makedirs(laser_scanner_point_clouds_folder_path, exist_ok=True) | ||
|
||
for extension in [".ply", "_pose.txt"]: | ||
filename = f"{laser_scanner_point_cloud_id}{extension}" | ||
filepath = os.path.join(laser_scanner_point_clouds_folder_path, filename) | ||
if os.path.exists(filepath): | ||
return | ||
file_url = f"{ARkitscense_url}/raw/laser_scanner_point_clouds/{visit_id}/{filename}" | ||
download_file(file_url, filename, laser_scanner_point_clouds_folder_path) | ||
|
||
|
||
def get_metadata(dataset: str, download_dir: Path) -> pd.DataFrame: | ||
filename = "metadata.csv" | ||
url = f"{ARkitscense_url}/threedod/{filename}" if "3dod" == dataset else f"{ARkitscense_url}/{dataset}/{filename}" | ||
dst_folder = download_dir / dataset | ||
dst_file = dst_folder / filename | ||
|
||
if not download_file(url, filename, dst_folder): | ||
return | ||
|
||
metadata = pd.read_csv(dst_file) | ||
return metadata | ||
|
||
|
||
def download_data( | ||
dataset: str, | ||
video_ids: List[str], | ||
dataset_splits: List[str], | ||
download_dir: Path, | ||
keep_zip: bool, | ||
raw_dataset_assets: Optional[List[str]] = None, | ||
should_download_laser_scanner_point_cloud: bool = False, | ||
) -> None: | ||
""" | ||
Downloads data from the specified dataset and video IDs to the given download directory. | ||
Args: | ||
---- | ||
dataset: the name of the dataset to download from (raw, 3dod, or upsampling) | ||
video_ids: the list of video IDs to download data for | ||
dataset_splits: the list of splits for each video ID (train, validation, or test) | ||
download_dir: the directory to download data to | ||
keep_zip: whether to keep the downloaded zip files after extracting them | ||
raw_dataset_assets: a list of asset types to download from the raw dataset, if dataset is "raw" | ||
should_download_laser_scanner_point_cloud: whether to download the laser scanner point cloud data, if available | ||
Returns: None | ||
""" | ||
metadata = get_metadata(dataset, download_dir) | ||
if None is metadata: | ||
print(f"Error retrieving metadata for dataset {dataset}") | ||
return | ||
|
||
for video_id in sorted(set(video_ids)): | ||
split = dataset_splits[video_ids.index(video_id)] | ||
dst_dir = download_dir / dataset / split | ||
if dataset == "raw": | ||
url_prefix = "" | ||
file_names = [] | ||
if not raw_dataset_assets: | ||
print(f"Warning: No raw assets given for video id {video_id}") | ||
else: | ||
dst_dir = dst_dir / str(video_id) | ||
url_prefix = f"{ARkitscense_url}/raw/{split}/{video_id}" + "/{}" | ||
file_names = raw_files(video_id, raw_dataset_assets, metadata) | ||
elif dataset == "3dod": | ||
url_prefix = f"{ARkitscense_url}/threedod/{split}" + "/{}" | ||
file_names = [ | ||
f"{video_id}.zip", | ||
] | ||
elif dataset == "upsampling": | ||
url_prefix = f"{ARkitscense_url}/upsampling/{split}" + "/{}" | ||
file_names = [ | ||
f"{video_id}.zip", | ||
] | ||
else: | ||
raise Exception(f"No such dataset = {dataset}") | ||
|
||
if should_download_laser_scanner_point_cloud and dataset == "raw": | ||
# Point clouds only available for the raw dataset | ||
download_laser_scanner_point_clouds_for_video(video_id, metadata, download_dir) | ||
|
||
for file_name in file_names: | ||
dst_path = os.path.join(dst_dir, file_name) | ||
url = url_prefix.format(file_name) | ||
|
||
if not file_name.endswith(".zip") or not os.path.isdir(dst_path[: -len(".zip")]): | ||
download_file(url, dst_path, dst_dir) | ||
else: | ||
print(f"WARNING: skipping download of existing zip file: {dst_path}") | ||
if file_name.endswith(".zip") and os.path.isfile(dst_path): | ||
unzip_file(file_name, dst_dir, keep_zip) | ||
|
||
|
||
def ensure_recording_downloaded(video_id: str, include_highres: bool) -> Path: | ||
"""Only downloads from validation set.""" | ||
data_path = DATASET_DIR / "raw" / "Validation" / video_id | ||
assets_to_download = [ | ||
"lowres_wide", | ||
"lowres_depth", | ||
"lowres_wide_intrinsics", | ||
"lowres_wide.traj", | ||
"annotation", | ||
"mesh", | ||
] | ||
if include_highres: | ||
assets_to_download.extend(["highres_depth", "wide", "wide_intrinsics"]) | ||
download_data( | ||
dataset="raw", | ||
video_ids=[video_id], | ||
dataset_splits=[VALIDATION], | ||
download_dir=DATASET_DIR, | ||
keep_zip=False, | ||
raw_dataset_assets=assets_to_download, | ||
should_download_laser_scanner_point_cloud=False, | ||
) | ||
return data_path | ||
|
||
|
||
def ensure_recording_available(video_id: str, include_highres: bool) -> Path: | ||
""" | ||
Returns the path to the recording for a given video_id. | ||
Args: | ||
video_id (str): Identifier for the recording. | ||
Returns | ||
------- | ||
Path: Path object representing the path to the recording. | ||
Raises | ||
------ | ||
AssertionError: If the recording path does not exist. | ||
""" | ||
recording_path = ensure_recording_downloaded(video_id, include_highres) | ||
assert recording_path.exists(), f"Recording path {recording_path} does not exist." | ||
return recording_path # Return the path to the recording |
Oops, something went wrong.
a479c0c
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Rust Benchmark
arrow2/size_bytes/primitive/rows=10000/instances=100/array
147994
ns/iter (± 893
)151283
ns/iter (± 1110
)0.98
arrow2/size_bytes/primitive/rows=10000/instances=100/vec
3294
ns/iter (± 9
)3291
ns/iter (± 26
)1.00
arrow2/size_bytes/primitive/rows=10000/instances=100/vec/erased
17720
ns/iter (± 16
)17727
ns/iter (± 49
)1.00
arrow2/size_bytes/struct/rows=10000/instances=100/array
500113
ns/iter (± 3426
)485165
ns/iter (± 3064
)1.03
arrow2/size_bytes/struct/rows=10000/instances=100/vec
3296
ns/iter (± 10
)3285
ns/iter (± 11
)1.00
arrow2/size_bytes/struct/rows=10000/instances=100/vec/erased
17727
ns/iter (± 14
)17738
ns/iter (± 53
)1.00
arrow2/size_bytes/struct_large/rows=10000/instances=100/array
3922912
ns/iter (± 610668
)3729278
ns/iter (± 455125
)1.05
arrow2/size_bytes/struct_large/rows=10000/instances=100/vec
3985
ns/iter (± 9
)3974
ns/iter (± 15
)1.00
arrow2/size_bytes/struct_large/rows=10000/instances=100/vec/erased
17723
ns/iter (± 12
)17739
ns/iter (± 44
)1.00
arrow2/erased_clone/primitive/rows=10000/instances=100/cell/arc_erased
786279
ns/iter (± 4188
)789253
ns/iter (± 1686
)1.00
arrow2/erased_clone/primitive/rows=10000/instances=100/cell/wrapped_in_arc
194582
ns/iter (± 1345
)195448
ns/iter (± 625
)1.00
arrow2/erased_clone/primitive/rows=10000/instances=100/array
764522
ns/iter (± 3503
)740940
ns/iter (± 2893
)1.03
arrow2/erased_clone/primitive/rows=10000/instances=100/array/downcast_first
343191
ns/iter (± 840
)343781
ns/iter (± 1396
)1.00
arrow2/erased_clone/primitive/rows=10000/instances=100/vec/full_copy
1079821
ns/iter (± 41571
)1011980
ns/iter (± 27228
)1.07
arrow2/erased_clone/primitive/rows=10000/instances=100/vec/wrapped_in_arc
127370
ns/iter (± 121
)128818
ns/iter (± 547
)0.99
arrow2/erased_clone/struct/rows=10000/instances=100/cell/arc_erased
4879578
ns/iter (± 462848
)4231047
ns/iter (± 79589
)1.15
arrow2/erased_clone/struct/rows=10000/instances=100/cell/wrapped_in_arc
281001
ns/iter (± 1236
)287869
ns/iter (± 663
)0.98
arrow2/erased_clone/struct/rows=10000/instances=100/array
4546946
ns/iter (± 338391
)4234502
ns/iter (± 63681
)1.07
arrow2/erased_clone/struct/rows=10000/instances=100/array/downcast_first
3833097
ns/iter (± 230940
)3571220
ns/iter (± 44405
)1.07
arrow2/erased_clone/struct/rows=10000/instances=100/vec/full_copy
1398201
ns/iter (± 66950
)1287148
ns/iter (± 30665
)1.09
arrow2/erased_clone/struct/rows=10000/instances=100/vec/wrapped_in_arc
127203
ns/iter (± 167
)127479
ns/iter (± 182
)1.00
arrow2/erased_clone/struct_large/rows=10000/instances=100/cell/arc_erased
47932231
ns/iter (± 370571
)47856426
ns/iter (± 409354
)1.00
arrow2/erased_clone/struct_large/rows=10000/instances=100/cell/wrapped_in_arc
169192
ns/iter (± 301
)167118
ns/iter (± 426
)1.01
arrow2/erased_clone/struct_large/rows=10000/instances=100/array
47073222
ns/iter (± 395513
)46951163
ns/iter (± 422407
)1.00
arrow2/erased_clone/struct_large/rows=10000/instances=100/array/downcast_first
44723675
ns/iter (± 392388
)44645934
ns/iter (± 433245
)1.00
arrow2/erased_clone/struct_large/rows=10000/instances=100/vec/full_copy
4961198
ns/iter (± 188245
)4483235
ns/iter (± 132187
)1.11
arrow2/erased_clone/struct_large/rows=10000/instances=100/vec/wrapped_in_arc
127434
ns/iter (± 114
)127021
ns/iter (± 310
)1.00
arrow2_convert/serialize/primitive/instances=100000/arrow2_convert
414857
ns/iter (± 894
)416608
ns/iter (± 1008
)1.00
arrow2_convert/serialize/primitive/instances=100000/arrow2/from_values
19629
ns/iter (± 168
)19735
ns/iter (± 108
)0.99
arrow2_convert/serialize/primitive/instances=100000/arrow2/from_vec
19630
ns/iter (± 68
)19666
ns/iter (± 110
)1.00
arrow2_convert/deserialize/primitive/instances=100000/arrow2_convert
96787
ns/iter (± 391
)96876
ns/iter (± 205
)1.00
arrow2_convert/deserialize/primitive/instances=100000/arrow2/validity_checks
162328
ns/iter (± 1149
)159726
ns/iter (± 514
)1.02
arrow2_convert/deserialize/primitive/instances=100000/arrow2/validity_bypass
58396
ns/iter (± 203
)58632
ns/iter (± 241
)1.00
datastore/num_rows=1000/num_instances=1000/packed=false/insert/default
12998775
ns/iter (± 895249
)10763489
ns/iter (± 281148
)1.21
datastore/num_rows=1000/num_instances=1000/packed=false/insert/bucketsz=0
15772995
ns/iter (± 930279
)13018134
ns/iter (± 738578
)1.21
datastore/num_rows=1000/num_instances=1000/packed=false/insert/bucketsz=2
14618045
ns/iter (± 877459
)12651480
ns/iter (± 511062
)1.16
datastore/num_rows=1000/num_instances=1000/packed=false/insert/bucketsz=32
12936795
ns/iter (± 720707
)11134486
ns/iter (± 451515
)1.16
datastore/num_rows=1000/num_instances=1000/packed=false/insert/bucketsz=2048
12442665
ns/iter (± 856789
)10714231
ns/iter (± 402476
)1.16
datastore/num_rows=1000/num_instances=1000/packed=true/insert/default
12532401
ns/iter (± 760304
)10657953
ns/iter (± 394314
)1.18
datastore/num_rows=1000/num_instances=1000/packed=true/insert/bucketsz=0
14488787
ns/iter (± 909714
)13515670
ns/iter (± 708546
)1.07
datastore/num_rows=1000/num_instances=1000/packed=true/insert/bucketsz=2
14163399
ns/iter (± 688201
)13259593
ns/iter (± 481684
)1.07
datastore/num_rows=1000/num_instances=1000/packed=true/insert/bucketsz=32
12378691
ns/iter (± 915249
)10970687
ns/iter (± 348299
)1.13
datastore/num_rows=1000/num_instances=1000/packed=true/insert/bucketsz=2048
12510887
ns/iter (± 776983
)10855773
ns/iter (± 467414
)1.15
datastore/num_rows=1000/num_instances=1000/packed=false/latest_at/default
1827
ns/iter (± 18
)1823
ns/iter (± 18
)1.00
datastore/num_rows=1000/num_instances=1000/packed=false/latest_at/bucketsz=0
1835
ns/iter (± 3
)1834
ns/iter (± 5
)1.00
datastore/num_rows=1000/num_instances=1000/packed=false/latest_at/bucketsz=2
1832
ns/iter (± 1
)1806
ns/iter (± 10
)1.01
datastore/num_rows=1000/num_instances=1000/packed=false/latest_at/bucketsz=32
1825
ns/iter (± 4
)1798
ns/iter (± 6
)1.02
datastore/num_rows=1000/num_instances=1000/packed=false/latest_at/bucketsz=2048
1813
ns/iter (± 8
)1802
ns/iter (± 9
)1.01
datastore/num_rows=1000/num_instances=1000/packed=true/latest_at/default
1830
ns/iter (± 17
)1837
ns/iter (± 18
)1.00
datastore/num_rows=1000/num_instances=1000/packed=true/latest_at/bucketsz=0
1847
ns/iter (± 1
)1827
ns/iter (± 6
)1.01
datastore/num_rows=1000/num_instances=1000/packed=true/latest_at/bucketsz=2
1847
ns/iter (± 0
)1829
ns/iter (± 13
)1.01
datastore/num_rows=1000/num_instances=1000/packed=true/latest_at/bucketsz=32
1830
ns/iter (± 3
)1821
ns/iter (± 3
)1.00
datastore/num_rows=1000/num_instances=1000/packed=true/latest_at/bucketsz=2048
1819
ns/iter (± 3
)1816
ns/iter (± 5
)1.00
datastore/num_rows=1000/num_instances=1000/packed=false/latest_at_missing/primary/default
279
ns/iter (± 0
)280
ns/iter (± 0
)1.00
datastore/num_rows=1000/num_instances=1000/packed=false/latest_at_missing/secondaries/default
436
ns/iter (± 2
)434
ns/iter (± 0
)1.00
datastore/num_rows=1000/num_instances=1000/packed=false/latest_at_missing/primary/bucketsz=0
279
ns/iter (± 8
)280
ns/iter (± 0
)1.00
datastore/num_rows=1000/num_instances=1000/packed=false/latest_at_missing/secondaries/bucketsz=0
442
ns/iter (± 0
)443
ns/iter (± 1
)1.00
datastore/num_rows=1000/num_instances=1000/packed=false/latest_at_missing/primary/bucketsz=2
279
ns/iter (± 0
)281
ns/iter (± 1
)0.99
datastore/num_rows=1000/num_instances=1000/packed=false/latest_at_missing/secondaries/bucketsz=2
443
ns/iter (± 0
)444
ns/iter (± 4
)1.00
datastore/num_rows=1000/num_instances=1000/packed=false/latest_at_missing/primary/bucketsz=32
280
ns/iter (± 0
)281
ns/iter (± 0
)1.00
datastore/num_rows=1000/num_instances=1000/packed=false/latest_at_missing/secondaries/bucketsz=32
445
ns/iter (± 0
)452
ns/iter (± 2
)0.98
datastore/num_rows=1000/num_instances=1000/packed=false/latest_at_missing/primary/bucketsz=2048
280
ns/iter (± 0
)281
ns/iter (± 1
)1.00
datastore/num_rows=1000/num_instances=1000/packed=false/latest_at_missing/secondaries/bucketsz=2048
436
ns/iter (± 0
)435
ns/iter (± 1
)1.00
datastore/num_rows=1000/num_instances=1000/packed=true/latest_at_missing/primary/default
279
ns/iter (± 0
)280
ns/iter (± 1
)1.00
datastore/num_rows=1000/num_instances=1000/packed=true/latest_at_missing/secondaries/default
435
ns/iter (± 4
)434
ns/iter (± 0
)1.00
datastore/num_rows=1000/num_instances=1000/packed=true/latest_at_missing/primary/bucketsz=0
278
ns/iter (± 0
)281
ns/iter (± 0
)0.99
datastore/num_rows=1000/num_instances=1000/packed=true/latest_at_missing/secondaries/bucketsz=0
442
ns/iter (± 0
)443
ns/iter (± 0
)1.00
datastore/num_rows=1000/num_instances=1000/packed=true/latest_at_missing/primary/bucketsz=2
279
ns/iter (± 0
)280
ns/iter (± 0
)1.00
datastore/num_rows=1000/num_instances=1000/packed=true/latest_at_missing/secondaries/bucketsz=2
444
ns/iter (± 0
)442
ns/iter (± 1
)1.00
datastore/num_rows=1000/num_instances=1000/packed=true/latest_at_missing/primary/bucketsz=32
280
ns/iter (± 0
)281
ns/iter (± 1
)1.00
datastore/num_rows=1000/num_instances=1000/packed=true/latest_at_missing/secondaries/bucketsz=32
440
ns/iter (± 2
)440
ns/iter (± 1
)1
datastore/num_rows=1000/num_instances=1000/packed=true/latest_at_missing/primary/bucketsz=2048
280
ns/iter (± 0
)281
ns/iter (± 1
)1.00
datastore/num_rows=1000/num_instances=1000/packed=true/latest_at_missing/secondaries/bucketsz=2048
435
ns/iter (± 0
)439
ns/iter (± 1
)0.99
datastore/num_rows=1000/num_instances=1000/packed=false/range/default
12509287
ns/iter (± 762536
)11457359
ns/iter (± 462659
)1.09
datastore/num_rows=1000/num_instances=1000/packed=false/range/bucketsz=0
2169839
ns/iter (± 28323
)2143869
ns/iter (± 15109
)1.01
datastore/num_rows=1000/num_instances=1000/packed=false/range/bucketsz=2
2139433
ns/iter (± 26326
)2112255
ns/iter (± 10677
)1.01
datastore/num_rows=1000/num_instances=1000/packed=false/range/bucketsz=32
1929682
ns/iter (± 121372
)1896031
ns/iter (± 9771
)1.02
datastore/num_rows=1000/num_instances=1000/packed=false/range/bucketsz=2048
1852267
ns/iter (± 11955
)1876213
ns/iter (± 8318
)0.99
datastore/num_rows=1000/num_instances=1000/packed=true/range/default
11320813
ns/iter (± 729736
)11001071
ns/iter (± 374155
)1.03
datastore/num_rows=1000/num_instances=1000/packed=true/range/bucketsz=0
2199809
ns/iter (± 718781
)2162103
ns/iter (± 10563
)1.02
datastore/num_rows=1000/num_instances=1000/packed=true/range/bucketsz=2
2352035
ns/iter (± 215958
)2159238
ns/iter (± 7589
)1.09
datastore/num_rows=1000/num_instances=1000/packed=true/range/bucketsz=32
1868752
ns/iter (± 19199
)1866201
ns/iter (± 6492
)1.00
datastore/num_rows=1000/num_instances=1000/packed=true/range/bucketsz=2048
1810217
ns/iter (± 22539
)1784572
ns/iter (± 8580
)1.01
vector_ops/sort/instances=10000/smallvec/n=4
12489
ns/iter (± 27
)12495
ns/iter (± 28
)1.00
vector_ops/sort/instances=10000/tinyvec/n=4
9668
ns/iter (± 35
)9657
ns/iter (± 25
)1.00
vector_ops/sort/instances=10000/vec
9662
ns/iter (± 26
)9646
ns/iter (± 15
)1.00
vector_ops/split_off/instances=10000/smallvec/n=4/manual
5560
ns/iter (± 13
)5540
ns/iter (± 14
)1.00
vector_ops/split_off/instances=10000/tinyvec/n=4
2736
ns/iter (± 47
)2725
ns/iter (± 29
)1.00
vector_ops/split_off/instances=10000/tinyvec/n=4/manual
2749
ns/iter (± 13
)2751
ns/iter (± 24
)1.00
vector_ops/split_off/instances=10000/vec
2730
ns/iter (± 15
)2725
ns/iter (± 28
)1.00
vector_ops/split_off/instances=10000/vec/manual
2731
ns/iter (± 14
)2729
ns/iter (± 18
)1.00
vector_ops/swap/instances=10000/smallvec/n=4
32790
ns/iter (± 19
)32799
ns/iter (± 109
)1.00
vector_ops/swap/instances=10000/tinyvec/n=4
18273
ns/iter (± 32
)18298
ns/iter (± 56
)1.00
vector_ops/swap/instances=10000/vec
12319
ns/iter (± 46
)12326
ns/iter (± 44
)1.00
vector_ops/swap_opt/instances=10000/smallvec/n=4
42707
ns/iter (± 18
)42721
ns/iter (± 128
)1.00
vector_ops/swap_opt/instances=10000/tinyvec/n=4
28829
ns/iter (± 47
)28740
ns/iter (± 71
)1.00
vector_ops/swap_opt/instances=10000/vec
20444
ns/iter (± 44
)20499
ns/iter (± 72
)1.00
mono_points_arrow/generate_message_bundles
43413180
ns/iter (± 388637
)42263835
ns/iter (± 565333
)1.03
mono_points_arrow/generate_messages
165210149
ns/iter (± 1117232
)165330811
ns/iter (± 1195711
)1.00
mono_points_arrow/encode_log_msg
214044018
ns/iter (± 1948235
)208858509
ns/iter (± 728157
)1.02
mono_points_arrow/encode_total
417503248
ns/iter (± 2750334
)412774486
ns/iter (± 1332459
)1.01
mono_points_arrow/decode_log_msg
252992406
ns/iter (± 907858
)253238133
ns/iter (± 892875
)1.00
mono_points_arrow/decode_message_bundles
87634729
ns/iter (± 771178
)85034359
ns/iter (± 560002
)1.03
mono_points_arrow/decode_total
337973259
ns/iter (± 1620416
)336980142
ns/iter (± 2768318
)1.00
mono_points_arrow_batched/generate_message_bundles
38815186
ns/iter (± 1180020
)35883327
ns/iter (± 1403287
)1.08
mono_points_arrow_batched/generate_messages
11861080
ns/iter (± 1098257
)9744786
ns/iter (± 579876
)1.22
mono_points_arrow_batched/encode_log_msg
1835909
ns/iter (± 9578
)1809577
ns/iter (± 4439
)1.01
mono_points_arrow_batched/encode_total
54348295
ns/iter (± 1230729
)47117882
ns/iter (± 1687525
)1.15
mono_points_arrow_batched/decode_log_msg
1004723
ns/iter (± 31051
)984344
ns/iter (± 2142
)1.02
mono_points_arrow_batched/decode_message_bundles
20462351
ns/iter (± 822112
)18164779
ns/iter (± 842270
)1.13
mono_points_arrow_batched/decode_total
21646007
ns/iter (± 704227
)19901030
ns/iter (± 881916
)1.09
batch_points_arrow/generate_message_bundles
285301
ns/iter (± 431
)284872
ns/iter (± 1370
)1.00
batch_points_arrow/generate_messages
7574
ns/iter (± 28
)7726
ns/iter (± 19
)0.98
batch_points_arrow/encode_log_msg
391812
ns/iter (± 3583
)389145
ns/iter (± 1273
)1.01
batch_points_arrow/encode_total
701580
ns/iter (± 3532
)701660
ns/iter (± 3606
)1.00
batch_points_arrow/decode_log_msg
340643
ns/iter (± 1350
)339351
ns/iter (± 1047
)1.00
batch_points_arrow/decode_message_bundles
2894
ns/iter (± 6
)3003
ns/iter (± 14
)0.96
batch_points_arrow/decode_total
353655
ns/iter (± 2888
)347807
ns/iter (± 1059
)1.02
arrow_mono_points/insert
6188808563
ns/iter (± 24064588
)6072989444
ns/iter (± 10257810
)1.02
arrow_mono_points/query
1848256
ns/iter (± 21034
)1821232
ns/iter (± 9323
)1.01
arrow_batch_points/insert
3003107
ns/iter (± 56033
)3059392
ns/iter (± 13171
)0.98
arrow_batch_points/query
16511
ns/iter (± 17
)16378
ns/iter (± 67
)1.01
arrow_batch_vecs/insert
43281
ns/iter (± 103
)43671
ns/iter (± 116
)0.99
arrow_batch_vecs/query
506738
ns/iter (± 617
)506597
ns/iter (± 3294
)1.00
tuid/Tuid::random
34
ns/iter (± 0
)34
ns/iter (± 0
)1
This comment was automatically generated by workflow using github-action-benchmark.