Skip to content

Commit

Permalink
CI: Initial workflow for aarch64-linux-android
Browse files Browse the repository at this point in the history
  • Loading branch information
thedataking committed Jun 28, 2024
1 parent c24fae0 commit 8490bfb
Show file tree
Hide file tree
Showing 3 changed files with 191 additions and 0 deletions.
38 changes: 38 additions & 0 deletions .github/workflows/build-and-test-aarch64-android.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: build and test on android
on:
push:
branches:
- 'main'
pull_request:

jobs:
test-in-android-emulator:
timeout-minutes: 60
runs-on: ubuntu-latest
steps:
- name: add NDK toolchain to path
run: |
echo "$ANDROID_NDK_LATEST_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin" >> $GITHUB_PATH
- name: git checkout
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: cache rust dependencies
uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: aarch64-android-cargo-and-target-${{ hashFiles('**/Cargo.lock') }}
- name: cargo build for aarch64-linux-android
run: |
rustup target add aarch64-linux-android
cargo build --target aarch64-linux-android --release
env:
AR: llvm-ar
CC: aarch64-linux-android26-clang
RUSTFLAGS: "-C linker=aarch64-linux-android26-clang -L $ANDROID_NDK_LATEST_HOME/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/17/lib/linux/aarch64 -L $ANDROID_NDK_LATEST_HOME/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/26"

12 changes: 12 additions & 0 deletions bench_android.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#!/bin/bash

# Enable exit on error
set -e

for i in {1..10}
do
echo "testing dav1d"
adb shell LD_LIBRARY_PATH=/data/local/ time /data/local/dav1d_c_impl -q -i /data/local/Chimera-AV1-8bit-1920x1080-6736kbps.ivf -o /dev/null
echo "testing rav1d"
adb shell LD_LIBRARY_PATH=/data/local/ time /data/local/dav1d -q -i /data/local/Chimera-AV1-8bit-1920x1080-6736kbps.ivf -o /dev/null
done
141 changes: 141 additions & 0 deletions bench_results.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
import re

def parse_time(time_str):
return float(time_str)

def calculate_average(times):
return sum(times) / len(times)

def main():
rav1d_times = []
dav1d_times = []
current_decoder = None

data = '''
testing dav1d
real 47.214
user 270.204236
sys 6.683360
testing rav1d
real 58.240
user 357.863738
sys 9.970720
testing dav1d
real 59.890
user 379.184440
sys 8.899621
testing rav1d
real 70.354
user 447.472465
sys 11.418514
testing dav1d
real 61.442
user 392.380113
sys 9.166131
testing rav1d
real 69.864
user 443.213629
sys 11.830889
testing dav1d
real 61.312
user 392.964597
sys 9.255956
testing rav1d
real 69.378
user 442.190257
sys 11.543815
testing dav1d
real 61.320
user 393.89938
sys 9.47970
testing rav1d
real 69.944
user 443.964194
sys 11.637191
testing dav1d
real 61.523
user 392.879454
sys 9.100157
testing rav1d
real 69.657
user 443.42958
sys 11.803730
testing dav1d
real 61.359
user 393.30041
sys 9.258827
testing rav1d
real 69.262
user 441.865210
sys 11.250262
testing dav1d
real 61.380
user 394.61714
sys 8.902229
testing rav1d
real 69.670
user 443.120249
sys 11.486521
testing dav1d
real 61.533
user 393.521276
sys 9.432644
testing rav1d
real 69.561
user 444.259118
sys 11.996127
testing dav1d
real 61.334
user 393.363427
sys 9.20679
testing rav1d
real 69.599
user 445.186791
sys 11.423909
'''

for line in data.strip().split('\n'):
if line.startswith('#'):
continue
elif line.startswith('real'):
time = parse_time(line.split()[1])
if current_decoder == 'rav1d':
rav1d_times.append(time)
elif current_decoder == 'dav1d':
dav1d_times.append(time)
elif line.startswith('testing'):
current_decoder = line.split()[1]

avg_rav1d = calculate_average(rav1d_times)
avg_dav1d = calculate_average(dav1d_times)

percentage_difference = ((avg_rav1d - avg_dav1d) / avg_dav1d) * 100

print(f"Average time for rav1d: {avg_rav1d:.3f} seconds")
print(f"Average time for dav1d: {avg_dav1d:.3f} seconds")
print(f"rav1d is {percentage_difference:.2f}% slower than dav1d")

if __name__ == "__main__":
main()

0 comments on commit 8490bfb

Please sign in to comment.