Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
月轩居士
SkyWalking
提交
8faa3564
S
SkyWalking
项目概览
月轩居士
/
SkyWalking
与 Fork 源项目一致
Fork自
apache / SkyWalking
通知
4
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
SkyWalking
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
8faa3564
编写于
7月 17, 2019
作者:
D
Daming
提交者:
wu-sheng
7月 17, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Using ArrayList to instead of LinkedList (#3093)
* Using ArrayList to instead of LinkedList
上级
f84e1de5
变更
5
展开全部
隐藏空白更改
内联
并排
Showing
5 changed file
with
374 addition
and
48 deletion
+374
-48
apm-commons/apm-datacarrier/src/main/java/org/apache/skywalking/apm/commons/datacarrier/buffer/Buffer.java
...che/skywalking/apm/commons/datacarrier/buffer/Buffer.java
+7
-7
apm-commons/apm-datacarrier/src/main/java/org/apache/skywalking/apm/commons/datacarrier/consumer/ConsumerThread.java
...king/apm/commons/datacarrier/consumer/ConsumerThread.java
+16
-20
apm-commons/apm-datacarrier/src/main/java/org/apache/skywalking/apm/commons/datacarrier/consumer/MultipleChannelsConsumer.java
...ommons/datacarrier/consumer/MultipleChannelsConsumer.java
+16
-11
apm-commons/apm-datacarrier/src/test/java/org/apache/skywalking/apm/commons/datacarrier/DataCarrierTest.java
...e/skywalking/apm/commons/datacarrier/DataCarrierTest.java
+15
-10
apm-commons/apm-datacarrier/src/test/java/org/apache/skywalking/apm/commons/datacarrier/LinkedArrayBenchmark.java
...walking/apm/commons/datacarrier/LinkedArrayBenchmark.java
+320
-0
未找到文件。
apm-commons/apm-datacarrier/src/main/java/org/apache/skywalking/apm/commons/datacarrier/buffer/Buffer.java
浏览文件 @
8faa3564
...
...
@@ -18,10 +18,12 @@
package
org.apache.skywalking.apm.commons.datacarrier.buffer
;
import
java.util.*
;
import
org.apache.skywalking.apm.commons.datacarrier.callback.QueueBlockingCallback
;
import
org.apache.skywalking.apm.commons.datacarrier.common.AtomicRangeInteger
;
import
java.util.LinkedList
;
import
java.util.List
;
/**
* Created by wusheng on 2016/10/25.
*/
...
...
@@ -79,19 +81,17 @@ public class Buffer<T> {
return
buffer
.
length
;
}
public
LinkedList
<
T
>
obtain
(
)
{
return
this
.
obtain
(
0
,
buffer
.
length
);
public
void
obtain
(
List
<
T
>
consumeList
)
{
this
.
obtain
(
consumeList
,
0
,
buffer
.
length
);
}
public
LinkedList
<
T
>
obtain
(
int
start
,
int
end
)
{
LinkedList
<
T
>
result
=
new
LinkedList
<
T
>();
public
void
obtain
(
List
<
T
>
consumeList
,
int
start
,
int
end
)
{
for
(
int
i
=
start
;
i
<
end
;
i
++)
{
if
(
buffer
[
i
]
!=
null
)
{
resul
t
.
add
((
T
)
buffer
[
i
]);
consumeLis
t
.
add
((
T
)
buffer
[
i
]);
buffer
[
i
]
=
null
;
}
}
return
result
;
}
}
apm-commons/apm-datacarrier/src/main/java/org/apache/skywalking/apm/commons/datacarrier/consumer/ConsumerThread.java
浏览文件 @
8faa3564
...
...
@@ -19,10 +19,11 @@
package
org.apache.skywalking.apm.commons.datacarrier.consumer
;
import
java.util.LinkedList
;
import
java.util.List
;
import
org.apache.skywalking.apm.commons.datacarrier.buffer.Buffer
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* Created by wusheng on 2016/10/25.
*/
...
...
@@ -36,7 +37,7 @@ public class ConsumerThread<T> extends Thread {
super
(
threadName
);
this
.
consumer
=
consumer
;
running
=
false
;
dataSources
=
new
LinkedList
<
DataSource
>(
);
dataSources
=
new
ArrayList
<
DataSource
>(
1
);
this
.
consumeCycle
=
consumeCycle
;
}
...
...
@@ -64,10 +65,9 @@ public class ConsumerThread<T> extends Thread {
public
void
run
()
{
running
=
true
;
final
List
<
T
>
consumeList
=
new
ArrayList
<
T
>(
1500
);
while
(
running
)
{
boolean
hasData
=
consume
();
if
(!
hasData
)
{
if
(!
consume
(
consumeList
))
{
try
{
Thread
.
sleep
(
consumeCycle
);
}
catch
(
InterruptedException
e
)
{
...
...
@@ -77,31 +77,27 @@ public class ConsumerThread<T> extends Thread {
// consumer thread is going to stop
// consume the last time
consume
();
consume
(
consumeList
);
consumer
.
onExit
();
}
private
boolean
consume
()
{
boolean
hasData
=
false
;
LinkedList
<
T
>
consumeList
=
new
LinkedList
<
T
>();
private
boolean
consume
(
List
<
T
>
consumeList
)
{
for
(
DataSource
dataSource
:
dataSources
)
{
LinkedList
<
T
>
data
=
dataSource
.
obtain
();
if
(
data
.
size
()
==
0
)
{
continue
;
}
consumeList
.
addAll
(
data
);
hasData
=
true
;
dataSource
.
obtain
(
consumeList
);
}
if
(
consumeList
.
size
()
>
0
)
{
if
(
!
consumeList
.
isEmpty
()
)
{
try
{
consumer
.
consume
(
consumeList
);
}
catch
(
Throwable
t
)
{
consumer
.
onError
(
consumeList
,
t
);
}
finally
{
consumeList
.
clear
();
}
return
true
;
}
return
hasData
;
return
false
;
}
void
shutdown
()
{
...
...
@@ -122,8 +118,8 @@ public class ConsumerThread<T> extends Thread {
this
.
end
=
end
;
}
LinkedList
<
T
>
obtain
(
)
{
return
sourceBuffer
.
obtain
(
start
,
end
);
void
obtain
(
List
<
T
>
consumeList
)
{
sourceBuffer
.
obtain
(
consumeList
,
start
,
end
);
}
}
}
apm-commons/apm-datacarrier/src/main/java/org/apache/skywalking/apm/commons/datacarrier/consumer/MultipleChannelsConsumer.java
浏览文件 @
8faa3564
...
...
@@ -18,8 +18,11 @@
package
org.apache.skywalking.apm.commons.datacarrier.consumer
;
import
java.util.*
;
import
org.apache.skywalking.apm.commons.datacarrier.buffer.*
;
import
org.apache.skywalking.apm.commons.datacarrier.buffer.Buffer
;
import
org.apache.skywalking.apm.commons.datacarrier.buffer.Channels
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* MultipleChannelsConsumer represent a single consumer thread, but support multiple channels with their {@link
...
...
@@ -43,10 +46,12 @@ public class MultipleChannelsConsumer extends Thread {
public
void
run
()
{
running
=
true
;
final
List
consumeList
=
new
ArrayList
(
2000
);
while
(
running
)
{
boolean
hasData
=
false
;
for
(
Group
target
:
consumeTargets
)
{
hasData
=
hasData
||
consume
(
target
);
boolean
consume
=
consume
(
target
,
consumeList
);
hasData
=
hasData
||
consume
;
}
if
(!
hasData
)
{
...
...
@@ -55,34 +60,34 @@ public class MultipleChannelsConsumer extends Thread {
}
catch
(
InterruptedException
e
)
{
}
}
}
// consumer thread is going to stop
// consume the last time
for
(
Group
target
:
consumeTargets
)
{
consume
(
target
);
consume
(
target
,
consumeList
);
target
.
consumer
.
onExit
();
}
}
private
boolean
consume
(
Group
target
)
{
boolean
hasData
;
LinkedList
consumeList
=
new
LinkedList
();
private
boolean
consume
(
Group
target
,
List
consumeList
)
{
for
(
int
i
=
0
;
i
<
target
.
channels
.
getChannelSize
();
i
++)
{
Buffer
buffer
=
target
.
channels
.
getBuffer
(
i
);
consumeList
.
addAll
(
buffer
.
obtain
()
);
buffer
.
obtain
(
consumeList
);
}
if
(
hasData
=
consumeList
.
size
()
>
0
)
{
if
(
!
consumeList
.
isEmpty
()
)
{
try
{
target
.
consumer
.
consume
(
consumeList
);
}
catch
(
Throwable
t
)
{
target
.
consumer
.
onError
(
consumeList
,
t
);
}
finally
{
consumeList
.
clear
();
}
return
true
;
}
return
hasData
;
return
false
;
}
/**
...
...
apm-commons/apm-datacarrier/src/test/java/org/apache/skywalking/apm/commons/datacarrier/DataCarrierTest.java
浏览文件 @
8faa3564
...
...
@@ -19,6 +19,7 @@
package
org.apache.skywalking.apm.commons.datacarrier
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.apache.skywalking.apm.commons.datacarrier.buffer.Buffer
;
import
org.apache.skywalking.apm.commons.datacarrier.buffer.BufferStrategy
;
...
...
@@ -65,13 +66,15 @@ public class DataCarrierTest {
Channels
<
SampleData
>
channels
=
(
Channels
<
SampleData
>)(
MemberModifier
.
field
(
DataCarrier
.
class
,
"channels"
).
get
(
carrier
));
Buffer
<
SampleData
>
buffer1
=
channels
.
getBuffer
(
0
);
List
result1
=
buffer1
.
obtain
(
0
,
100
);
List
result
=
new
ArrayList
();
buffer1
.
obtain
(
result
,
0
,
100
);
Assert
.
assertEquals
(
2
,
result
.
size
());
Buffer
<
SampleData
>
buffer2
=
channels
.
getBuffer
(
1
);
List
result2
=
buffer2
.
obtain
(
0
,
100
);
buffer2
.
obtain
(
result
,
0
,
100
);
Assert
.
assertEquals
(
2
,
result1
.
size
());
Assert
.
assertEquals
(
4
,
result1
.
size
()
+
result2
.
size
());
Assert
.
assertEquals
(
4
,
result
.
size
());
}
...
...
@@ -86,11 +89,12 @@ public class DataCarrierTest {
Channels
<
SampleData
>
channels
=
(
Channels
<
SampleData
>)(
MemberModifier
.
field
(
DataCarrier
.
class
,
"channels"
).
get
(
carrier
));
Buffer
<
SampleData
>
buffer1
=
channels
.
getBuffer
(
0
);
List
result1
=
buffer1
.
obtain
(
0
,
100
);
List
result
=
new
ArrayList
();
buffer1
.
obtain
(
result
,
0
,
100
);
Buffer
<
SampleData
>
buffer2
=
channels
.
getBuffer
(
1
);
List
result2
=
buffer2
.
obtain
(
0
,
100
);
Assert
.
assertEquals
(
200
,
result
1
.
size
()
+
result2
.
size
());
buffer2
.
obtain
(
result
,
0
,
100
);
Assert
.
assertEquals
(
200
,
result
.
size
());
}
@Test
...
...
@@ -108,11 +112,12 @@ public class DataCarrierTest {
Channels
<
SampleData
>
channels
=
(
Channels
<
SampleData
>)(
MemberModifier
.
field
(
DataCarrier
.
class
,
"channels"
).
get
(
carrier
));
Buffer
<
SampleData
>
buffer1
=
channels
.
getBuffer
(
0
);
List
result1
=
buffer1
.
obtain
(
0
,
100
);
List
result
=
new
ArrayList
();
buffer1
.
obtain
(
result
,
0
,
100
);
Buffer
<
SampleData
>
buffer2
=
channels
.
getBuffer
(
1
);
List
result2
=
buffer2
.
obtain
(
0
,
100
);
Assert
.
assertEquals
(
200
,
result
1
.
size
()
+
result2
.
size
());
buffer2
.
obtain
(
result
,
0
,
100
);
Assert
.
assertEquals
(
200
,
result
.
size
());
}
@Test
...
...
apm-commons/apm-datacarrier/src/test/java/org/apache/skywalking/apm/commons/datacarrier/LinkedArrayBenchmark.java
0 → 100644
浏览文件 @
8faa3564
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录