Skip to content

Instantly share code, notes, and snippets.

View AngelicosPhosphoros's full-sized avatar

AngelicosPhosphoros

View GitHub Profile
#![feature(no_core)]
#![no_core]
#![crate_type="rlib"]
#![feature(rustc_attrs)]
#![feature(fundamental)]
#![feature(lang_items)]
#![feature(intrinsics)]
#![feature(auto_traits)]
#![allow(non_camel_case_types)]
@AngelicosPhosphoros
AngelicosPhosphoros / bench.rs
Last active July 16, 2022 15:14
Benchmark of taking Rust Vec items by predicate
// Results:
// | algorithm | Mixed | Odds first | Evens first |
// |-------------|-------|------------|-------------|
// |sort-split | 465us | 35us | 10us |
// |drain_filter | 26us | 24us | 22.5us |
// |retain-uninit| 17us | 21us | 19us |
//
// See also explanation on StackOverflow: https://stackoverflow.com/a/73005333/8195987
#![feature(drain_filter)]
@AngelicosPhosphoros
AngelicosPhosphoros / main.rs
Created November 18, 2021 01:22
Tuple uniqueness test
#![feature(const_type_id)]
use std::any::TypeId;
use std::mem::{size_of, align_of};
pub trait IsUniqueTuple{
const IS_UNIQUE: bool;
type ElementTypesArray;
const ELEMENT_TYPES_SORTED: Self::ElementTypesArray;
}
@AngelicosPhosphoros
AngelicosPhosphoros / combinations_benchmark.rs
Last active December 12, 2020 18:11
Comparison between using itertools crate, indexing and slice iterations
use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion};
use itertools::Itertools;
use std::convert::TryInto;
fn gen_numbers(size: u32) -> Vec<u32> {
use rand::prelude::Rng;
let mut rng = rand::thread_rng();
let dist = rand::distributions::Uniform::new_inclusive(1u32, 10_000);
let size: usize = size.try_into().unwrap();
(0..size).map(|_| rng.sample(dist)).collect()
@AngelicosPhosphoros
AngelicosPhosphoros / main.rs
Last active June 6, 2024 19:35
How to print enabled cpu target features in Rust
#![recursion_limit="512"]
// This script prints all cpu features which active in this build.
// There are 3 steps in usage of script:
// 1. get list of features using `rustc --print target-features`
// 2. put it into script (it has values actual for 2020-12-06 for x86-64 target).
// 3. run script.
fn pad_name(s: &str)->String{
let mut res = s.to_string();
@AngelicosPhosphoros
AngelicosPhosphoros / Source.cpp
Created October 8, 2020 17:47
Example of OVERLAPPED IO using WinAPI
#include <atomic>
#include <cassert>
#include <iostream>
#include <list>
#include <memory>
#include <mutex>
#include <optional>
#include <thread>
#include <vector>
@AngelicosPhosphoros
AngelicosPhosphoros / Rust circular move using unsafe Hole.rs
Created February 25, 2020 13:57
Rust circular move using unsafe Hole
use std::cmp::{Ord, Ordering};
use std::collections::HashMap;
use std::fmt::Debug;
use std::vec::Vec;
struct HeapEntry<TKey, TPriority> {
key: TKey,
priority: TPriority,
}
@AngelicosPhosphoros
AngelicosPhosphoros / Comparison
Created December 1, 2019 15:16
TCP vs HTTP server
http local
In 60.0000814 seconds we received 665953 responses and 0 errors
Mean 11099.201608749818 requests/sec
http remote
In 60.0109771 seconds we received 1224 responses and 0 errors
Mean 20.396268468689872 requests/sec
tcp nodelay local
In 60.0000037 seconds we received 3152850 responses and 0 errors
#!/usr/bin/python3
W_DIR = 'data/save'
BEGIN_PATTERN = 'region3'
ZIP_EXECUTABLE = 'C:/Program Files/7-Zip/7z.exe'
OUT_PUT_PATH = 'E:/Games/DF/Backups'
import os
import os.path
import subprocess
@AngelicosPhosphoros
AngelicosPhosphoros / Timur Khuzin HW HMM.ipynb
Last active March 12, 2019 20:45
Homework about Hidden Markov Models
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.