Browse Source

auto commit

pull/19/MERGE
yitter 2 years ago
parent
commit
cce7a65384
6 changed files with 88 additions and 43 deletions
  1. +37
    -8
      C#.NET/source/Yitter.IdGenTest/Program.cs
  2. +27
    -16
      C/source/main.c
  3. +14
    -12
      Go/source/main.go
  4. +3
    -1
      Java/source/.gitignore
  5. +3
    -3
      Java/source/pom.xml
  6. +4
    -3
      Java/source/src/test/java/com/github/yitter/test/StartUp.java

+ 37
- 8
C#.NET/source/Yitter.IdGenTest/Program.cs View File

@@ -12,7 +12,7 @@ namespace Yitter.OrgSystem.TestA
class Program class Program
{ {
// 测试参数(默认配置下,最佳性能是10W/s) // 测试参数(默认配置下,最佳性能是10W/s)
static int genIdCount = 2;//5000; // 计算ID数量(如果要验证50W效率,请将TopOverCostCount设置为20000或适当增加SeqBitLength)
static int genIdCount = 500000;//5000; // 计算ID数量(如果要验证50W效率,请将TopOverCostCount设置为2000或适当增加SeqBitLength)
static short method = 1; // 1-漂移算法,2-传统算法 static short method = 1; // 1-漂移算法,2-传统算法
@@ -27,6 +27,9 @@ namespace Yitter.OrgSystem.TestA
static void Main(string[] args) static void Main(string[] args)
{ {
RunSingle();
return;
Console.WriteLine("Hello World! C#"); Console.WriteLine("Hello World! C#");
var options = new IdGeneratorOptions() var options = new IdGeneratorOptions()
@@ -130,16 +133,42 @@ namespace Yitter.OrgSystem.TestA
private static void RunSingle() private static void RunSingle()
{ {
DateTime start = DateTime.Now;
for (int i = 0; i < genIdCount; i++)
var options = new IdGeneratorOptions()
{ {
var id = IdGen.NewLong();
}
Method = 1,
WorkerId = 1,
//WorkerIdBitLength = 6,
SeqBitLength = 6,
//DataCenterIdBitLength = 0,
//TopOverCostCount = 2000,
DateTime end = DateTime.Now;
Console.WriteLine($"++++++++++++++++++++++++++++++++++++++++, total: {(end - start).TotalMilliseconds} ms");
Interlocked.Increment(ref Program.Count);
//TimestampType = 1,
// MinSeqNumber = 1,
// MaxSeqNumber = 200,
// BaseTime = DateTime.Now.AddYears(-10),
};
//IdGen = new DefaultIdGenerator(options);
YitIdHelper.SetIdGenerator(options);
while (true)
{
DateTime start = DateTime.Now;
for (int i = 0; i < genIdCount; i++)
{
//var id = IdGen.NewLong();
var id = YitIdHelper.NextId();
}
DateTime end = DateTime.Now;
Console.WriteLine($"++++++++++++++++++++++++++++++++++++++++, total: {(end - start).TotalMilliseconds} ms");
Thread.Sleep(1000);
}
//Interlocked.Increment(ref Program.Count);
} }
private static void Go(IdGeneratorOptions options) private static void Go(IdGeneratorOptions options)


+ 27
- 16
C/source/main.c View File

@@ -13,51 +13,62 @@
#include "idgen/IdGenerator.h" #include "idgen/IdGenerator.h"
#include "YitIdHelper.h" #include "YitIdHelper.h"
const int GenIdCount = 50000;
const int GenIdCount = 500000;
const bool multiThread = false; const bool multiThread = false;
const int threadCount = 50; const int threadCount = 50;
const int method = 1; const int method = 1;
void RunMultiThread() {
//int64_t start = GetCurrentMicroTime();
for (int i = 0; i < GenIdCount / threadCount; i++) {
void RunMultiThread()
{
// int64_t start = GetCurrentMicroTime();
for (int i = 0; i < GenIdCount / threadCount; i++)
{
int64_t id = NextId(); int64_t id = NextId();
printf("ID: %D\n", id); printf("ID: %D\n", id);
} }
int64_t end = GetCurrentMicroTime(); int64_t end = GetCurrentMicroTime();
//printf("%s,total:%d μs\n", method == 1 ? "1" : "2", (end - start));
// printf("%s,total:%d μs\n", method == 1 ? "1" : "2", (end - start));
} }
void RunSingle() {
void RunSingle()
{
int64_t start = GetCurrentMicroTime(); int64_t start = GetCurrentMicroTime();
for (int i = 0; i < GenIdCount; i++) {
for (int i = 0; i < GenIdCount; i++)
{
int64_t id = NextId(); int64_t id = NextId();
// printf("ID: %ld\n", id);
// printf("ID: %ld\n", id);
} }
int64_t end = GetCurrentMicroTime(); int64_t end = GetCurrentMicroTime();
printf("%s, total: %d us\n", method == 1 ? "1" : "2", (end - start)); printf("%s, total: %d us\n", method == 1 ? "1" : "2", (end - start));
} }
int main() {
int main()
{
IdGeneratorOptions options = BuildIdGenOptions(1); IdGeneratorOptions options = BuildIdGenOptions(1);
options.Method = method; options.Method = method;
options.WorkerId = 1; options.WorkerId = 1;
options.SeqBitLength = 6;
options.SeqBitLength = 10;
// options.TopOverCostCount = 2000;
SetIdGenerator(options); SetIdGenerator(options);
pthread_t tid[threadCount]; pthread_t tid[threadCount];
while (1) {
if (multiThread) {
for (int i = 0; i < threadCount; i++) {
if (pthread_create(&tid[i], NULL, (void *) RunMultiThread, NULL) != 0) {
while (1)
{
if (multiThread)
{
for (int i = 0; i < threadCount; i++)
{
if (pthread_create(&tid[i], NULL, (void *)RunMultiThread, NULL) != 0)
{
printf("thread creation failed\n"); printf("thread creation failed\n");
exit(1); exit(1);
} }
} }
} else {
}
else
{
RunSingle(); RunSingle();
} }


+ 14
- 12
Go/source/main.go View File

@@ -24,22 +24,24 @@ func main() {
// 自定义参数 // 自定义参数
var options = idgen.NewIdGeneratorOptions(1) var options = idgen.NewIdGeneratorOptions(1)
options.WorkerIdBitLength = 6 options.WorkerIdBitLength = 6
options.SeqBitLength = 6
options.SeqBitLength = 10
options.BaseTime = time.Date(2020, 2, 20, 2, 20, 2, 20, time.UTC).UnixNano() / 1e6 options.BaseTime = time.Date(2020, 2, 20, 2, 20, 2, 20, time.UTC).UnixNano() / 1e6
idgen.SetIdGenerator(options) idgen.SetIdGenerator(options)


var genCount = 50000
for {
var begin = time.Now().UnixNano() / 1e3
for i := 0; i < genCount; i++ {
// 生成ID
id := idgen.NextId()
fmt.Println(id)
var genCount = 500000
for j := 0; j < 100000; j++ {
for {
var begin = time.Now().UnixNano() / 1e6
for i := 0; i < genCount; i++ {
// 生成ID
idgen.NextId()
// fmt.Println(id)
}
var end = time.Now().UnixNano() / 1e6

fmt.Println("耗时:", (end - begin), "ms")
time.Sleep(time.Duration(1000) * time.Millisecond)
} }
var end = time.Now().UnixNano() / 1e3

fmt.Println(end - begin)
time.Sleep(time.Duration(1000) * time.Millisecond)
} }
} else { } else {
// ip := "localhost" // ip := "localhost"


+ 3
- 1
Java/source/.gitignore View File

@@ -19,7 +19,9 @@
*.zip *.zip
*.tar.gz *.tar.gz
*.rar *.rar
target/
target
.vscode
*.code-workspace


# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid* hs_err_pid*

+ 3
- 3
Java/source/pom.xml View File

@@ -41,9 +41,9 @@
<properties> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<java.version>1.8</java.version>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<java.version>11</java.version>
</properties> </properties>
<dependencies> <dependencies>
<dependency> <dependency>


+ 4
- 3
Java/source/src/test/java/com/github/yitter/test/StartUp.java View File

@@ -12,7 +12,7 @@ public class StartUp {
* [不同CPU可能结果有差异,但相对大小不变] * [不同CPU可能结果有差异,但相对大小不变]
* 默认配置下,最佳性能是5W/s-8W/s * 默认配置下,最佳性能是5W/s-8W/s
*/ */
final static int genIdCount = 50000;
final static int genIdCount = 500000;
//1-漂移算法,2-传统算法 //1-漂移算法,2-传统算法
final static short method = 1; final static short method = 1;
@@ -20,11 +20,12 @@ public class StartUp {
public static void main(String[] args) { public static void main(String[] args) {
IdGeneratorOptions options = new IdGeneratorOptions(); IdGeneratorOptions options = new IdGeneratorOptions();
// options.WorkerIdBitLength = 6;
// options.SeqBitLength = 6;
// options.WorkerIdBitLength = 6; // 默认6
options.SeqBitLength = 10; // 默认6
// options.BaseTime = 1582206693000L; // options.BaseTime = 1582206693000L;
options.Method = method; options.Method = method;
options.WorkerId = 1; options.WorkerId = 1;
options.TopOverCostCount=2000;
// 首先测试一下 IdHelper 方法,获取单个Id // 首先测试一下 IdHelper 方法,获取单个Id
YitIdHelper.setIdGenerator(options); YitIdHelper.setIdGenerator(options);


Loading…
Cancel
Save