SlideShare uma empresa Scribd logo
1 de 30
Baixar para ler offline
IWSC ‘17
CREST, University College London, UK
Using Compilation/Decompilation
to Enhance Clone Detection
Chaiyong Ragkhitwetsagul, Jens Krinke
Clone 

det.
Plag 

det.
Comp.
Others
ccfx
deckard
iclones
nicad
simian
jplag-java
jplag-text
plaggie
sherlock
simjava
simtext
7zncd-BZip2
7zncd-LZMA
7zncd-LZMA2
7zncd-Deflate
7zncd-Deflate64
7zncd-PPMd
bzip2ncd
gzipncd
icd
ncd-bzlib
ncd-zlib
xz-ncd
bsdiff
diff
py-difflib
py-fuzzywuzzy
py-jellyfish
py-ngram
py-sklearn
0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1 F1
Orig.
Dec.
Ragkhitwetsagul et al., 2016
Clone 

det.
Plag 

det.
Comp.
Others
ccfx
deckard
iclones
nicad
simian
jplag-java
jplag-text
plaggie
sherlock
simjava
simtext
7zncd-BZip2
7zncd-LZMA
7zncd-LZMA2
7zncd-Deflate
7zncd-Deflate64
7zncd-PPMd
bzip2ncd
gzipncd
icd
ncd-bzlib
ncd-zlib
xz-ncd
bsdiff
diff
py-difflib
py-fuzzywuzzy
py-jellyfish
py-ngram
py-sklearn
0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1 F1
Orig.
Dec.
4
O. Kononenko, C. Zhang, and M. W. Godfrey, ICSME ‘14
What Happens?
Compiling Clones:
and Decompiling
4
What Happens?
Compiling Clones:
Source
Code
and Decompiling
4
What Happens?
Compiling Clones:
Existing
tools
Source
Code
and Decompiling
4
What Happens?
Compiling Clones:
Missing
Source
Existing
tools
Source
Code
and Decompiling
4
What Happens?
Compiling Clones:
C. Ragkhitwetsagul J. Krinke CREST, UCL, UK
decomp.
clones
clone
mapper
decomp. &
mapped clones
compiler
decompiler
decompiled software
clone
detector
original
clones
5
software
common
clones
disjoint
clones
manual investigation
Experimental Framework
C. Ragkhitwetsagul J. Krinke CREST, UCL, UK 6
System Ver.
Original Decompiled
Files SLOC Files SLOC
4.1.3 203 9,777 311 11,233
1.5.0 644 96,711 669 85,251
9.0 1,688 241,924 2603 256,974
Apache Tomcat®
Software Systems
7
Tool Config. Parameters
NiCad Type-1 UPI=0.0, renaming=none
Type-2 UPI=0.0, renaming=consistent
Type-3 UPI=0.3, renaming=consistent
Tools
javac Procyon NiCad
Compiler Decompiler Clone Detector
8
Clone Mapper
decompiled
clone report
DCP1(dm1, dm2)
decompiled clone
pairs
software
m1
m2
m4
m3
mn
…
DCP2(dm1, dm3)
DCP3(dm2, dm4)
…
DCPn(dmm, dmo)
set of methods (M)
mo
decompiled-and-mapped
clone report
DCP*1((dm1,dm2),(m1,m2))
DCP*2((dm1,dm3),(m1,m3))
DCP*3((dm2,dm4),(m2,m4))
DCP*n((dmm,dmo),(mm,mo))
…
decompiled-and-mapped
clone pairs
…
C. Ragkhitwetsagul J. Krinke CREST, UCL, UK 9
Common & Disjoint Clone Pairs
Ccommon
Corig-only Cdecomp-only
Original Decompiled
C. Ragkhitwetsagul J. Krinke CREST, UCL, UK 10
Results
11
JUnit
Original Decompiled
Type-1
Type-2
Type-3
6
3
12
JFreeChart
Original Decompiled
Type-1
Type-2
Type-3
159
155
33
15
48
1
17
27
3
13
Tomcat
Original Decompiled
Type-1
Type-2
Type-3
217
608
20
25
141
22
3
23
1
C. Ragkhitwetsagul J. Krinke CREST, UCL, UK 14
Manual Investigation
15
No.ofclonepairs
0
10
20
30
40
50
Type-1 Type-2 Type-3
47
15
1
48
15
1
Candidates TP
JFreeChart
Cforig-only
No.ofclonepairs
0
6
12
18
24
30
Type-1 Type-2 Type-3
27
17
3
27
17
3
Cfdecomp-only
16
No.ofclonepairs
0
32
64
96
128
160
Type-1 Type-2 Type-3
141
2522
141
2522
Candidates TP
Tomcat
Cforig-only
No.ofclonepairs
0
6
12
18
24
30
Type-1 Type-2 Type-3
23
31
23
31
Cfdecomp-only
Clone set Reasons
Cforig-only
Too small after decomp.
Too diff. after decomp.
Smaller after decomp. higher dissimilarity
Unknown
Cfdecomp-only
Having deleted/added stmt., type cast, package
name.
Different if-else statements
Different loop statements
Inner class methods
Unknown
Characteristics of Disjoint Clones
Clone set Reasons
Cforig-only Too small after decomp.
Too diff. after decomp.
Smaller after decomp. higher
dissimilarity
Unknown
Cfdecomp-only
Having deleted/added stmt., type
cast, package name.
Different if-else statements
Different loop statements
Inner class methods
Unknown
JFreeChart
0 10 20 30 40 50
5
11
32
6
9
T1 T2 T3
0 2 4 6 8 10 12 14 16
12
4
3
8
12
53
Clone set Reasons
Cforig-only Too small after decomp.
Too diff. after decomp.
Smaller after decomp. higher
dissimilarity
Unknown
Cfdecomp-only
Having deleted/added stmt., type
cast, package name.
Different if-else statements
Different loop statements
Inner class methods
Unknown
Tomcat
0 28 56 84 112 140
16
5
120
19
6
T1 T2 T3
0 5 10 15 20 25 30
20
2
1
3
2
@Override	
	 public	Range	findRangeBounds(XYDataset	dataset)	{	
	 	 if	(dataset	!=	null)	{	
	 	 	 Range	r	=	DatasetUtilities.findRangeBounds(dataset,	false);	
	 	 	 if	(r	==	null)	{	
	 	 	 	 return	null;	
	 	 	 }	else	{	
	 	 	 	 return	new	Range(r.getLowerBound()	+	this.yOffset,	
																																																																								r.getUpperBound()	+	this.blockHeight	+	this.yOffset);	
	 	 	 }	
	 	 }	else	{	
	 	 	 return	null;	
	 	 }	
	 }		
	 @Override	
	 public	Range	findDomainBounds(XYDataset	dataset)	{	
	 	 if	(dataset	==	null)	{	
	 	 	 return	null;	
	 	 }	
	 	 Range	r	=	DatasetUtilities.findDomainBounds(dataset,	false);	
	 	 if	(r	==	null)	{	
	 	 	 return	null;	
	 	 }	
	 	 return	new	Range(r.getLowerBound()	+	this.xOffset,		
	 	 	 	 									r.getUpperBound()	+	this.blockWidth	+	this.xOffset);	
	 }
O
R
I
G
I
N
A
L
@Override	
	 public	Range	findRangeBounds(XYDataset	dataset)	{	
	 	 if	(dataset	!=	null)	{	
	 	 	 Range	r	=	DatasetUtilities.findRangeBounds(dataset,	false);	
	 	 	 if	(r	==	null)	{	
	 	 	 	 return	null;	
	 	 	 }	else	{	
	 	 	 	 return	new	Range(r.getLowerBound()	+	this.yOffset,	
																																																																								r.getUpperBound()	+	this.blockHeight	+	this.yOffset);	
	 	 	 }	
	 	 }	else	{	
	 	 	 return	null;	
	 	 }	
	 }		
	 @Override	
	 public	Range	findDomainBounds(XYDataset	dataset)	{	
	 	 if	(dataset	==	null)	{	
	 	 	 return	null;	
	 	 }	
	 	 Range	r	=	DatasetUtilities.findDomainBounds(dataset,	false);	
	 	 if	(r	==	null)	{	
	 	 	 return	null;	
	 	 }	
	 	 return	new	Range(r.getLowerBound()	+	this.xOffset,		
	 	 	 	 									r.getUpperBound()	+	this.blockWidth	+	this.xOffset);	
	 }
O
R
I
G
I
N
A
L
@Override	
	 public	Range	findDomainBounds(final	XYDataset	dataset)	{	
	 	 if	(dataset	==	null)	{	
	 	 	 return	null;	
	 	 }	
	 	 final	Range	r	=	DatasetUtilities.findDomainBounds(dataset,	false);	
	 	 if	(r	==	null)	{	
	 	 	 return	null;	
	 	 }	
	 	 return	new	Range(r.getLowerBound()	+	this.xOffset,		
																																																						r.getUpperBound()	+	this.blockWidth	+	this.xOffset);	
	 }
	 @Override	
	 public	Range	findRangeBounds(final	XYDataset	dataset)	{	
	 	 if	(dataset	==	null)	{	
	 	 	 return	null;	
	 	 }	
	 	 final	Range	r	=	DatasetUtilities.findRangeBounds(dataset,	false);	
	 	 if	(r	==	null)	{	
	 	 	 return	null;	
	 	 }	
	 	 return	new	Range(r.getLowerBound()	+	this.yOffset,		
	 	 	 	 									r.getUpperBound()	+	this.blockHeight	+	this.yOffset);	
	 }
D
E
C
O
M
P
I
L
E
D
public	void	clearRangeMarkers()	{	
				if	(this.backgroundRangeMarkers	!=	null)	{	
								Set<Integer>	keys	=		
																										this.backgroundRangeMarkers.keySet();	
								for	(Integer	key	:	keys)	{	
												clearRangeMarkers(key);	
								}	
								this.backgroundRangeMarkers.clear();	
				}	
				if	(this.foregroundRangeMarkers	!=	null)	{	
								Set<Integer>	keys	=		
																									this.foregroundRangeMarkers.keySet();	
								for	(Integer	key	:	keys)	{	
												clearRangeMarkers(key);	
								}	
								this.foregroundRangeMarkers.clear();	
				}	
				fireChangeEvent();	
}
				public	void	clearRangeMarkers()	{	
								if	(this.backgroundRangeMarkers	!=	null)	{	
												Set	keys	=		
																				this.backgroundRangeMarkers.keySet();	
												Iterator	iterator	=	keys.iterator();	
												while	(iterator.hasNext())	{	
																Integer	key	=	(Integer)	iterator.next();	
																clearRangeMarkers(key.intValue());	
												}	
												this.backgroundRangeMarkers.clear();	
								}	
								if	(this.foregroundRangeMarkers	!=	null)	{	
												Set	keys	=		
																				this.foregroundRangeMarkers.keySet();	
												Iterator	iterator	=	keys.iterator();	
												while	(iterator.hasNext())	{	
																Integer	key	=	(Integer)	iterator.next();	
																clearRangeMarkers(key.intValue());	
												}	
												this.foregroundRangeMarkers.clear();	
								}	
								fireChangeEvent();	
}	
ORIGINAL
public	void	clearRangeMarkers()	{	
				if	(this.backgroundRangeMarkers	!=	null)	{	
								Set<Integer>	keys	=		
																										this.backgroundRangeMarkers.keySet();	
								for	(Integer	key	:	keys)	{	
												clearRangeMarkers(key);	
								}	
								this.backgroundRangeMarkers.clear();	
				}	
				if	(this.foregroundRangeMarkers	!=	null)	{	
								Set<Integer>	keys	=		
																									this.foregroundRangeMarkers.keySet();	
								for	(Integer	key	:	keys)	{	
												clearRangeMarkers(key);	
								}	
								this.foregroundRangeMarkers.clear();	
				}	
				fireChangeEvent();	
}
				public	void	clearRangeMarkers()	{	
								if	(this.backgroundRangeMarkers	!=	null)	{	
												Set	keys	=		
																				this.backgroundRangeMarkers.keySet();	
												Iterator	iterator	=	keys.iterator();	
												while	(iterator.hasNext())	{	
																Integer	key	=	(Integer)	iterator.next();	
																clearRangeMarkers(key.intValue());	
												}	
												this.backgroundRangeMarkers.clear();	
								}	
								if	(this.foregroundRangeMarkers	!=	null)	{	
												Set	keys	=		
																				this.foregroundRangeMarkers.keySet();	
												Iterator	iterator	=	keys.iterator();	
												while	(iterator.hasNext())	{	
																Integer	key	=	(Integer)	iterator.next();	
																clearRangeMarkers(key.intValue());	
												}	
												this.foregroundRangeMarkers.clear();	
								}	
								fireChangeEvent();	
}	
ORIGINAL
public	void	clearRangeMarkers()	{	
				if	(this.backgroundDomainMarkers	!=	null)	{	
								final	Set<Integer>	keys	=		
																		this.backgroundDomainMarkers.keySet();	
												for	(final	Integer	key	:	keys)	{	
																this.clearDomainMarkers(key);	
												}	
												this.backgroundDomainMarkers.clear();	
								}	
								if	(this.foregroundDomainMarkers	!=	null)	{	
												final	Set<Integer>	keys	=		
																						this.foregroundDomainMarkers.keySet();	
												for	(final	Integer	key	:	keys)	{	
																this.clearDomainMarkers(key);	
												}	
												this.foregroundDomainMarkers.clear();	
								}	
								this.fireChangeEvent();	
}
				public	void	clearRangeMarkers()	{	
								if	(this.backgroundRangeMarkers	!=	null)	{	
												final	Set	keys	=		
																this.backgroundRangeMarkers.keySet();	
												for	(final	Integer	key	:	keys)	{	
																this.clearRangeMarkers(key);	
												}	
												this.backgroundRangeMarkers.clear();	
								}	
								if	(this.foregroundRangeMarkers	!=	null)	{	
								final	Set	keys	=		
												this.foregroundRangeMarkers.keySet();	
								for	(final	Integer	key	:	keys)	{	
												this.clearRangeMarkers(key);	
								}	
								this.foregroundRangeMarkers.clear();	
								}	
								this.fireChangeEvent();	
				}
DECOMPILED
26
Study on 3 real-world systems: JUnit, JFreeChart, Tomcat
Using Compilation/Decompilation 

to Enhance Clone Detection
1 Clone pairs before and after decompilation are mostly
similar for all three clone types.
Findings:
2 One can complement the original clone results by
incorporating clones after decompilation.
Characteristics of disjoint clones3
C. Ragkhitwetsagul, J. Krinke
cragkhit.github.io/crjk-iwsc17

Mais conteúdo relacionado

Destaque

Device-specific Clang Tooling for Embedded Systems
Device-specific Clang Tooling for Embedded SystemsDevice-specific Clang Tooling for Embedded Systems
Device-specific Clang Tooling for Embedded SystemsemBO_Conference
 
Meetup: Spark + Kerberos
Meetup: Spark + KerberosMeetup: Spark + Kerberos
Meetup: Spark + KerberosStratio
 
Inventario de perasonalidad pexposicion
Inventario de perasonalidad pexposicionInventario de perasonalidad pexposicion
Inventario de perasonalidad pexposicionTalita Mtz
 
A historia do noso planeta
A historia do noso planetaA historia do noso planeta
A historia do noso planetairenetraba
 
公聽會資料─豐富專案區段徵收
公聽會資料─豐富專案區段徵收公聽會資料─豐富專案區段徵收
公聽會資料─豐富專案區段徵收傑凱 楊
 
A estrutura e dinámica da terra
A estrutura e dinámica da terraA estrutura e dinámica da terra
A estrutura e dinámica da terrairenetraba
 
A saúde e a enfermidade
A saúde e a enfermidadeA saúde e a enfermidade
A saúde e a enfermidadeirenetraba
 
Estudo dos ecosistemas
Estudo dos ecosistemasEstudo dos ecosistemas
Estudo dos ecosistemasirenetraba
 
A información xenética
A información xenéticaA información xenética
A información xenéticairenetraba
 
MERCA PRESENTACION
MERCA PRESENTACIONMERCA PRESENTACION
MERCA PRESENTACIONlu2205
 
Presentación SDL Trados vs Déjà-vu
Presentación SDL Trados vs Déjà-vuPresentación SDL Trados vs Déjà-vu
Presentación SDL Trados vs Déjà-vuOLEXI
 
Los niñ@s de Villar de Olalla visitan Toledo, por Vicente Jiménez
Los niñ@s de Villar de Olalla visitan Toledo, por Vicente JiménezLos niñ@s de Villar de Olalla visitan Toledo, por Vicente Jiménez
Los niñ@s de Villar de Olalla visitan Toledo, por Vicente JiménezRebeca Collado del Pozo
 
Inhalation analytical techniques 1
Inhalation analytical techniques 1Inhalation analytical techniques 1
Inhalation analytical techniques 1Pankaj Deshpande
 

Destaque (17)

Device-specific Clang Tooling for Embedded Systems
Device-specific Clang Tooling for Embedded SystemsDevice-specific Clang Tooling for Embedded Systems
Device-specific Clang Tooling for Embedded Systems
 
Meetup: Spark + Kerberos
Meetup: Spark + KerberosMeetup: Spark + Kerberos
Meetup: Spark + Kerberos
 
Inventario de perasonalidad pexposicion
Inventario de perasonalidad pexposicionInventario de perasonalidad pexposicion
Inventario de perasonalidad pexposicion
 
Power point fuisha
Power point fuishaPower point fuisha
Power point fuisha
 
A historia do noso planeta
A historia do noso planetaA historia do noso planeta
A historia do noso planeta
 
公聽會資料─豐富專案區段徵收
公聽會資料─豐富專案區段徵收公聽會資料─豐富專案區段徵收
公聽會資料─豐富專案區段徵收
 
A estrutura e dinámica da terra
A estrutura e dinámica da terraA estrutura e dinámica da terra
A estrutura e dinámica da terra
 
A saúde e a enfermidade
A saúde e a enfermidadeA saúde e a enfermidade
A saúde e a enfermidade
 
El bulling
El bullingEl bulling
El bulling
 
Estudo dos ecosistemas
Estudo dos ecosistemasEstudo dos ecosistemas
Estudo dos ecosistemas
 
A información xenética
A información xenéticaA información xenética
A información xenética
 
MERCA PRESENTACION
MERCA PRESENTACIONMERCA PRESENTACION
MERCA PRESENTACION
 
Presentación SDL Trados vs Déjà-vu
Presentación SDL Trados vs Déjà-vuPresentación SDL Trados vs Déjà-vu
Presentación SDL Trados vs Déjà-vu
 
Los niñ@s de Villar de Olalla visitan Toledo, por Vicente Jiménez
Los niñ@s de Villar de Olalla visitan Toledo, por Vicente JiménezLos niñ@s de Villar de Olalla visitan Toledo, por Vicente Jiménez
Los niñ@s de Villar de Olalla visitan Toledo, por Vicente Jiménez
 
Roma
RomaRoma
Roma
 
Inhalation analytical techniques 1
Inhalation analytical techniques 1Inhalation analytical techniques 1
Inhalation analytical techniques 1
 
La amistad
La amistadLa amistad
La amistad
 

Semelhante a Using Compilation/Decompilation to Enhance Clone Detection

Similarity of Source Code in the Presence of Pervasive Modifications [SCAM'16]
Similarity of Source Code in the Presence of Pervasive Modifications [SCAM'16]Similarity of Source Code in the Presence of Pervasive Modifications [SCAM'16]
Similarity of Source Code in the Presence of Pervasive Modifications [SCAM'16]Chaiyong Ragkhitwetsagul
 
Internship - Final Presentation (26-08-2015)
Internship - Final Presentation (26-08-2015)Internship - Final Presentation (26-08-2015)
Internship - Final Presentation (26-08-2015)Sean Krail
 
LINE スタンプショップにおける Zipkin 利用事例
LINE スタンプショップにおける Zipkin 利用事例LINE スタンプショップにおける Zipkin 利用事例
LINE スタンプショップにおける Zipkin 利用事例LINE Corporation
 
Android & PostgreSQL
Android & PostgreSQLAndroid & PostgreSQL
Android & PostgreSQLMark Wong
 
Zarzadzanie pamiecia w .NET - WDI
Zarzadzanie pamiecia w .NET - WDIZarzadzanie pamiecia w .NET - WDI
Zarzadzanie pamiecia w .NET - WDIKonrad Kokosa
 
Debugging Ruby Systems
Debugging Ruby SystemsDebugging Ruby Systems
Debugging Ruby SystemsEngine Yard
 
No dark magic - Byte code engineering in the real world
No dark magic - Byte code engineering in the real worldNo dark magic - Byte code engineering in the real world
No dark magic - Byte code engineering in the real worldtcurdt
 
Functional manipulations of large data graphs 20160601
Functional manipulations of large data graphs 20160601Functional manipulations of large data graphs 20160601
Functional manipulations of large data graphs 20160601David Wood
 
Xdp and ebpf_maps
Xdp and ebpf_mapsXdp and ebpf_maps
Xdp and ebpf_mapslcplcp1
 
High Performance Systems Without Tears - Scala Days Berlin 2018
High Performance Systems Without Tears - Scala Days Berlin 2018High Performance Systems Without Tears - Scala Days Berlin 2018
High Performance Systems Without Tears - Scala Days Berlin 2018Zahari Dichev
 
(Slightly) Smarter Smart Pointers
(Slightly) Smarter Smart Pointers(Slightly) Smarter Smart Pointers
(Slightly) Smarter Smart PointersCarlo Pescio
 
Debugging Ruby
Debugging RubyDebugging Ruby
Debugging RubyAman Gupta
 
Bioinfo ngs data format visualization v2
Bioinfo ngs data format visualization v2Bioinfo ngs data format visualization v2
Bioinfo ngs data format visualization v2Li Shen
 
Convolutional neural networks for image classification — evidence from Kaggle...
Convolutional neural networks for image classification — evidence from Kaggle...Convolutional neural networks for image classification — evidence from Kaggle...
Convolutional neural networks for image classification — evidence from Kaggle...Dmytro Mishkin
 
Welcome, Java 15! (Japanese)
Welcome, Java 15! (Japanese)Welcome, Java 15! (Japanese)
Welcome, Java 15! (Japanese)Logico
 
CodeQL + DTrace = Memory Disclosure Vulnerabilities in XNU
CodeQL + DTrace = Memory Disclosure Vulnerabilities in XNUCodeQL + DTrace = Memory Disclosure Vulnerabilities in XNU
CodeQL + DTrace = Memory Disclosure Vulnerabilities in XNUArsenii Kostromin
 
Putting a Fork in Fork (Linux Process and Memory Management)
Putting a Fork in Fork (Linux Process and Memory Management)Putting a Fork in Fork (Linux Process and Memory Management)
Putting a Fork in Fork (Linux Process and Memory Management)David Evans
 

Semelhante a Using Compilation/Decompilation to Enhance Clone Detection (20)

Cram
CramCram
Cram
 
Similarity of Source Code in the Presence of Pervasive Modifications [SCAM'16]
Similarity of Source Code in the Presence of Pervasive Modifications [SCAM'16]Similarity of Source Code in the Presence of Pervasive Modifications [SCAM'16]
Similarity of Source Code in the Presence of Pervasive Modifications [SCAM'16]
 
Internship - Final Presentation (26-08-2015)
Internship - Final Presentation (26-08-2015)Internship - Final Presentation (26-08-2015)
Internship - Final Presentation (26-08-2015)
 
LINE スタンプショップにおける Zipkin 利用事例
LINE スタンプショップにおける Zipkin 利用事例LINE スタンプショップにおける Zipkin 利用事例
LINE スタンプショップにおける Zipkin 利用事例
 
Android & PostgreSQL
Android & PostgreSQLAndroid & PostgreSQL
Android & PostgreSQL
 
Zarzadzanie pamiecia w .NET - WDI
Zarzadzanie pamiecia w .NET - WDIZarzadzanie pamiecia w .NET - WDI
Zarzadzanie pamiecia w .NET - WDI
 
Debugging Ruby Systems
Debugging Ruby SystemsDebugging Ruby Systems
Debugging Ruby Systems
 
No dark magic - Byte code engineering in the real world
No dark magic - Byte code engineering in the real worldNo dark magic - Byte code engineering in the real world
No dark magic - Byte code engineering in the real world
 
Functional manipulations of large data graphs 20160601
Functional manipulations of large data graphs 20160601Functional manipulations of large data graphs 20160601
Functional manipulations of large data graphs 20160601
 
Xdp and ebpf_maps
Xdp and ebpf_mapsXdp and ebpf_maps
Xdp and ebpf_maps
 
High Performance Systems Without Tears - Scala Days Berlin 2018
High Performance Systems Without Tears - Scala Days Berlin 2018High Performance Systems Without Tears - Scala Days Berlin 2018
High Performance Systems Without Tears - Scala Days Berlin 2018
 
(Slightly) Smarter Smart Pointers
(Slightly) Smarter Smart Pointers(Slightly) Smarter Smart Pointers
(Slightly) Smarter Smart Pointers
 
IDS.pptx
IDS.pptxIDS.pptx
IDS.pptx
 
Debugging Ruby
Debugging RubyDebugging Ruby
Debugging Ruby
 
Bioinfo ngs data format visualization v2
Bioinfo ngs data format visualization v2Bioinfo ngs data format visualization v2
Bioinfo ngs data format visualization v2
 
Convolutional neural networks for image classification — evidence from Kaggle...
Convolutional neural networks for image classification — evidence from Kaggle...Convolutional neural networks for image classification — evidence from Kaggle...
Convolutional neural networks for image classification — evidence from Kaggle...
 
Lrz kurse: r as superglue
Lrz kurse: r as superglueLrz kurse: r as superglue
Lrz kurse: r as superglue
 
Welcome, Java 15! (Japanese)
Welcome, Java 15! (Japanese)Welcome, Java 15! (Japanese)
Welcome, Java 15! (Japanese)
 
CodeQL + DTrace = Memory Disclosure Vulnerabilities in XNU
CodeQL + DTrace = Memory Disclosure Vulnerabilities in XNUCodeQL + DTrace = Memory Disclosure Vulnerabilities in XNU
CodeQL + DTrace = Memory Disclosure Vulnerabilities in XNU
 
Putting a Fork in Fork (Linux Process and Memory Management)
Putting a Fork in Fork (Linux Process and Memory Management)Putting a Fork in Fork (Linux Process and Memory Management)
Putting a Fork in Fork (Linux Process and Memory Management)
 

Último

Thermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - VThermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - VDineshKumar4165
 
KubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlyKubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlysanyuktamishra911
 
chapter 5.pptx: drainage and irrigation engineering
chapter 5.pptx: drainage and irrigation engineeringchapter 5.pptx: drainage and irrigation engineering
chapter 5.pptx: drainage and irrigation engineeringmulugeta48
 
Block diagram reduction techniques in control systems.ppt
Block diagram reduction techniques in control systems.pptBlock diagram reduction techniques in control systems.ppt
Block diagram reduction techniques in control systems.pptNANDHAKUMARA10
 
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756dollysharma2066
 
Intro To Electric Vehicles PDF Notes.pdf
Intro To Electric Vehicles PDF Notes.pdfIntro To Electric Vehicles PDF Notes.pdf
Intro To Electric Vehicles PDF Notes.pdfrs7054576148
 
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...Call Girls in Nagpur High Profile
 
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Bookingdharasingh5698
 
Booking open Available Pune Call Girls Pargaon 6297143586 Call Hot Indian Gi...
Booking open Available Pune Call Girls Pargaon  6297143586 Call Hot Indian Gi...Booking open Available Pune Call Girls Pargaon  6297143586 Call Hot Indian Gi...
Booking open Available Pune Call Girls Pargaon 6297143586 Call Hot Indian Gi...Call Girls in Nagpur High Profile
 
notes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.pptnotes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.pptMsecMca
 
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night StandCall Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Standamitlee9823
 
Design For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the startDesign For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the startQuintin Balsdon
 
Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance BookingCall Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Bookingroncy bisnoi
 
Unit 2- Effective stress & Permeability.pdf
Unit 2- Effective stress & Permeability.pdfUnit 2- Effective stress & Permeability.pdf
Unit 2- Effective stress & Permeability.pdfRagavanV2
 
Double Revolving field theory-how the rotor develops torque
Double Revolving field theory-how the rotor develops torqueDouble Revolving field theory-how the rotor develops torque
Double Revolving field theory-how the rotor develops torqueBhangaleSonal
 
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...Arindam Chakraborty, Ph.D., P.E. (CA, TX)
 

Último (20)

Thermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - VThermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - V
 
Call Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Netaji Nagar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
 
KubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlyKubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghly
 
chapter 5.pptx: drainage and irrigation engineering
chapter 5.pptx: drainage and irrigation engineeringchapter 5.pptx: drainage and irrigation engineering
chapter 5.pptx: drainage and irrigation engineering
 
Block diagram reduction techniques in control systems.ppt
Block diagram reduction techniques in control systems.pptBlock diagram reduction techniques in control systems.ppt
Block diagram reduction techniques in control systems.ppt
 
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
 
Intro To Electric Vehicles PDF Notes.pdf
Intro To Electric Vehicles PDF Notes.pdfIntro To Electric Vehicles PDF Notes.pdf
Intro To Electric Vehicles PDF Notes.pdf
 
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
 
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
 
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
 
Booking open Available Pune Call Girls Pargaon 6297143586 Call Hot Indian Gi...
Booking open Available Pune Call Girls Pargaon  6297143586 Call Hot Indian Gi...Booking open Available Pune Call Girls Pargaon  6297143586 Call Hot Indian Gi...
Booking open Available Pune Call Girls Pargaon 6297143586 Call Hot Indian Gi...
 
notes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.pptnotes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.ppt
 
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night StandCall Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
 
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
 
Design For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the startDesign For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the start
 
Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance BookingCall Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Booking
 
Unit 2- Effective stress & Permeability.pdf
Unit 2- Effective stress & Permeability.pdfUnit 2- Effective stress & Permeability.pdf
Unit 2- Effective stress & Permeability.pdf
 
Double Revolving field theory-how the rotor develops torque
Double Revolving field theory-how the rotor develops torqueDouble Revolving field theory-how the rotor develops torque
Double Revolving field theory-how the rotor develops torque
 
NFPA 5000 2024 standard .
NFPA 5000 2024 standard                                  .NFPA 5000 2024 standard                                  .
NFPA 5000 2024 standard .
 
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
 

Using Compilation/Decompilation to Enhance Clone Detection