Skip to content

Instantly share code, notes, and snippets.

View greenrobot's full-sized avatar

Markus Junginger greenrobot

View GitHub Profile
@greenrobot
greenrobot / hibernate.sh
Created November 10, 2022 08:13
Hibernate Linux (Ubuntu 22.04) with freeing caches before
#!/bin/bash
free -h
echo "Pruning caches..."
sync
echo 3 | sudo tee /proc/sys/vm/drop_caches
free -h
echo "Hibernating..."
sudo systemctl hibernate
pactl load-module module-loopback latency_msec=1000
#switch off:
#pactl unload-module module-loopback
@greenrobot
greenrobot / CBoxTest_box_relations.cpp
Created January 12, 2022 08:00
Example of how to put, query and remove many-to-many database relations using ObjectBox C API
TEST_CASE("C-Box-relations", "") {
CTestEnv env;
env.enableManyEntity();
obx_schema_id test_id = obx_store_entity_id(env.store(), "TestEntityCpp");
obx_id ta_id = env.putTestEntity(0, "ta");
obx_id tb_id = env.putTestEntity(0, "tb");
obx_id tc_id = env.putTestEntity(0, "tc");
@greenrobot
greenrobot / gcc-for-nvidia-install.sh
Created June 18, 2021 12:07
NVIDIA driver problems: install/update script expects gcc but system's default is clang
update-alternatives --set cc /usr/bin/gcc
update-alternatives --set c++ /usr/bin/g++
cc --version
c++ --version
apt install nvidia-driver-460
update-alternatives --set cc /usr/bin/clang
update-alternatives --set c++ /usr/bin/clang++
cc --version
@greenrobot
greenrobot / IntSortSpeed-64vs32bit.cpp
Created August 1, 2020 14:19
Sorting 32 bit vs 64 bit integers: mini performance benchmark
TEST_CASE("IntSortSpeed-64vs32bit") {
std::random_device rd;
std::mt19937_64 mt(rd());
std::uniform_int_distribution<uint32_t> int32Dist;
int count = 100000000;
std::vector<uint32_t> v32;
v32.reserve(count);
std::vector<uint64_t> v64;
v64.reserve(count);
StopWatch stopWatch;
@greenrobot
greenrobot / Stresser.java
Created August 28, 2019 09:58
ObjectBox example: Cache query and multi-threaded usage of cached query
package io.objectbox.test.stress;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import io.objectbox.Box;
import io.objectbox.BoxStore;
import io.objectbox.query.Query;
@greenrobot
greenrobot / removeAllMultiTx.java
Created March 26, 2018 15:23
A "rescue" version of Box.removeAll() for DBs that reached their size limit.
/**
* A "rescue" version of Box.removeAll() for DBs that reached their size limit.
* Removes data in multiple transactions of increasing size to minimize required additional disk space.
* <p>
* Note that this method is not transactional, so it might fail in between, with any number of objects removed.
* Thus, you should persistently track the state yourself, e.g. by setting a SharedPreferences flag to indicate
* that removal is in progress. If this methods fails, you can check this flag to retry at a later point.
* Only once this method succeeds, this flag should be cleared.
* <p>
* It's recommended to increase the max. DB size to ensure addition capacity is available for this method.
@greenrobot
greenrobot / ObjectBoxLiveData.java
Created November 1, 2017 10:15
ObjectBox Android sources
/*
* Copyright 2017 ObjectBox Ltd. All rights reserved.
* Licensed 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,
@greenrobot
greenrobot / CircularStaticDependencies.java
Created May 3, 2017 15:49
(Almost) Circular class dependencies in Java. What does this print?
package org.greenrobot;
import java.util.concurrent.atomic.AtomicInteger;
public class CircularStaticDependencies {
static AtomicInteger count = new AtomicInteger(1);
static class A {
static String a1 = "a" + count.getAndIncrement();
static String a2 = "a" + count.getAndIncrement() + B.b1;
@greenrobot
greenrobot / MultithreadedRelationTest.java
Last active February 28, 2017 14:41
ObjectBox MultithreadedRelationTest
package io.objectbox.relation;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.File;
import java.util.List;
import java.util.Random;
import java.util.concurrent.CountDownLatch;