Introduction
Collatz numbers follow the sequence until x(n) is 1....
odd numbers are multiplied by 3 and increased by 1
even numbers are divided by 2
or (with shifting)
x(n) = initial
if x(n) even then x(n + 1) = x(n) >> 1 else x(n + 1) = x(n) << 1 + x(n) + 1
Quickstart
Performance#FullKubernetesClusterCPUSaturation
Artifacts
Repo | ||
jenkins | ||
sonar | ||
dev | ||
prod | ||
Jiras |
Requirements
Including assumptions
R# | A# | Details | |
---|---|---|---|
R1 | Optimize computation using parallel processing | ||
R2 | Optimize computation by maintaining a map of previous sequences | ||
Analysis
Map/Graph lookup for sequence truncation
The goal of computing the collatz sequence for a particular number is to iterate the sequence to 1. Since we have previously computed sequences that we will eventually revisit when running higher numbers - we must optimize collatz sequence generation by storing previous sequences for query. For example, the trivial sequence 8,4,2,1 is a subset of 32,16,8,4,2,1
API
Architecture
Use Cases
Design
Including implementation
1 Comment
Michael O'Brien
ARM 64
benchmark
macmini110 docker % ./build.sh
[+] Building 85.6s (10/10) FINISHED
=> [internal] load build definition from DockerFile_arm 0.1s
=> => transferring dockerfile: 437B 0.0s
=> [internal] load .dockerignore 0.1s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/arm64v8/openjdk:latest 1.3s
=> [auth] arm64v8/openjdk:pull token for registry-1.docker.io 0.0s
=> [1/4] FROM docker.io/arm64v8/openjdk@sha256:3e039585e4bd408d8e0543644e6231c436f9064f928b6ea4347313af1c865bb2 82.9s
=> => resolve docker.io/arm64v8/openjdk@sha256:3e039585e4bd408d8e0543644e6231c436f9064f928b6ea4347313af1c865bb2 0.0s
=> => sha256:3e039585e4bd408d8e0543644e6231c436f9064f928b6ea4347313af1c865bb2 462B / 462B 0.0s
=> => sha256:41b5e4d2891710bab81d2a4534dbe3524e3d45528d9815a8a893475583b1cbee 954B / 954B 0.0s
=> => sha256:252c9182247fa77a952ce0d76c9f0a9068649bcc2a196b8e8352e780043c5ef3 4.44kB / 4.44kB 0.0s
=> => sha256:a1eec3e47437e3334dd709f3a36be617982ec7579fa52be305301bb95c0d4be1 41.88MB / 41.88MB 2.0s
=> => sha256:11ec5552a84ea6485845e8e0a4d9b09b5e8f78d742440c18650d1ec9b1aacd89 14.27MB / 14.27MB 1.3s
=> => sha256:f9f8be97c8dc92aacf1496f9d52945fd57b624dba98e8062e19d6de766d6d712 185.95MB / 185.95MB 76.0s
=> => extracting sha256:a1eec3e47437e3334dd709f3a36be617982ec7579fa52be305301bb95c0d4be1 3.3s
=> => extracting sha256:11ec5552a84ea6485845e8e0a4d9b09b5e8f78d742440c18650d1ec9b1aacd89 1.0s
=> => extracting sha256:f9f8be97c8dc92aacf1496f9d52945fd57b624dba98e8062e19d6de766d6d712 6.6s
=> [internal] load build context 0.0s
=> => transferring context: 10.32kB 0.0s
=> [2/4] RUN mkdir -p /opt/app/ 0.9s
=> [3/4] ADD org.obrienscience.collatz.server.ForkJoinCollatzServer*.jar /opt/app//lib/org.obrienscience.collatz.server.ForkJoinCollatzServer.jar 0.0s
=> [4/4] ADD startService.sh /opt/app//bin/ 0.1s
=> exporting to image 0.1s
=> => exporting layers 0.1s
=> => writing image sha256:e105c37adacac91299dd97e765568646d4dd5481a333c8e487cf4c9ab9917634 0.0s
=> => naming to docker.io/obrienlabs/collatz-se 0.0s
Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
The push refers to repository [docker.io/obrienlabs/collatz-se]
a79977b46fd5: Pushed
c37cc5d48679: Pushed
b6fb6f506035: Pushed
79e24aec32e5: Mounted from arm64v8/openjdk
afacf90f401e: Mounted from arm64v8/openjdk
f6c0bde932b6: Mounted from arm64v8/openjdk
arm: digest: sha256:1e5c975e86bcb603427c854ca1bc59ae84056b1ec96469fda512287dddac6726 size: 1576