α׷
ù ȸ α
մ 2019-02-09 13:58:18
˰ , C++ vs. JAVA


https://res.infoq.com/presentations/java-vs-c-performance/en/slides/sl15.jpg



~

쿣 øǾƵ غϸ鼭

C ߱⿡, STL Ե C++ Űܼ ̾ϰ ߾ϴٸ,

ϰ غҶ JAVA մϴ.



ü JAVA 2ʾȿ Ǫ° C 1ʾȿǪ°ͺ Ǯٰұ

C ..


̳ ̷ ҰͰʾƼ C/C++ 迭

α׷ Ҷ api ŰƼ ..

java ϰŰƼ °ؼ ԵǾϴ.



acm icpc ȸ͵ƴϰ ׳ Ի ̴

0.1 ϱ⺸ پϰ Ǫµ ϰʹٺ

Cٴ  ϰ ε java ϰԵȰŰϴ.






Ͻʴϱ

 ȣϽ?  õֽǰǰ?

?

| 2163 о. 18.217.208.72

0
1 մ 2019-02-09 15:12:04
ڵҶ ϴ°
2 մ 2019-02-09 16:21:53
׳... ڵ Ͻô°!...
3 մ 2019-02-09 17:02:30
ظϸ ˰̸ ڵ带 ¥ ǰ

ȸ Ǹ ð ª Ű

̽ Ǹ ̽ DZϴ
4 մ 2019-02-09 17:04:58
kotlin
5 մ 2019-02-09 20:04:13
̽ Ͻô±

ڵϱ ѳ
6 մ 2019-02-09 20:04:32
Ʋ ߱ϴµ ߸
7 մ 2019-02-09 20:07:06
˰ ѰŴϱ ڵ Ǫ ϴ° ƿ.

Ի ȸ Java 𸣸 ȵDZ.

ٵ ˰ Ư  ؼ ° Ű, Java ´ٸ ߿ κ .

Liskov problem Ŷ, GC ۰ ͵.
8 մ 2019-02-09 20:08:00
׸ Java Ȯ ѹ ΰ ϱ, Python ̳ Kotlin ٸ صδ° ϴ.

Java ˾Ƽ ̱ ƽϴ.
9 մ 2019-02-09 20:25:40
ڸ, Java ص ؾմϴ.

Ѵٴ°, α׷  ð ̷ ƴ϶

JVM Internals ϰ ̿. World scale problem Ǯ ʿϰŵ.
10 մ 2019-02-10 20:46:47
ڸ۴ // մϴ~

JVM internals ϰ پ java ڰƴ϶ jvmڶ ︮ٲۿ.
뿬մϱ?

ηδ JVMϹ ϰͱ.

鿡 Ϲϰ JVM.. п û. ϰ Դϴ.



ڹٴ 忡 پ ¿ ϴ°Ű, ̿ϴ° arrayList ϰ ģ ˰ ڹٷ Ǯ.
11 մ 2019-02-10 22:06:02
LSP / GC & GC Root / hashCode & equals / new String("") vs "" / auto(boxing & unboxing)

data on heap vs on stack

immuability & mutability / thread safety problem

definition of pure virtual function // interface vs abstract class

Ȯϰ ڹٷ ԰ µ ū ϴ.
鵵 ϴ ƿ.
׷е 1 ̻ Ȳ ޸ ã ...
12 մ 2019-02-10 22:17:21
 ߿Ѱ
ۿ ȸ , Ѱ α׷  ˸ äϴ󱸿
ٴ ׳ ɷ ߽. ׷ ͺ ö ڱ ȸ翡 ȴٰ, ׳ Ѱ ˷޶, ͺ װɷ Ŷ ϴ󱸿.
Դٰ ͺ ߴ ȸ ڵ ۼ ׽Ʈ .
13 մ 2019-02-11 11:06:30
11 // ѹ Ẹϴ. հڳ׿. ּŵ˴ϴ

- LSP
ġȯĢ̶µ ׳ Դ ӹ boxingؾѴ 鸮׿. OOP 翬Ѱ ̸ ̶. goó interface based ̸ ʿ䰡 ֱϰ.

- GC & GC Root
GC Ķʹ  reference شٴ° ˰־ϴ.
ref cnt 0̵Ǿ ü ϴ° ٴ° ȮǸ ׶ ޸𸮿 ¾׼ϰ
gc Ÿ̹ Ҽ , θ ְ ü 带 ҷŰ
ؾѴٰ ˰ϴ. ׷ primitive ڷ GCǵ
Ȯ 𸣰ڳ׿. غ߰ϴ.
GCRoot ƿ𸣴 ÷׿.

- hashCode & equals
ü 񱳵ɶ, equals value ϴ°Ű hashcode object ȯϴ
޸𸮻 ġϴ , ƴϸ (represented value) ü
object based ڹٰ  Ѿ ϴ Ǽ.
operator equal (==) 쿡 ޸ ġ .

- new String("") vs ""
ϳ ü ϳ ͷε,
ܼ ͷ ʱȭǴ° ƴ϶, Ϸ Ժη ȭ ѹ
"" ʱȭ ޸ ġ Ű ֵ .
־ֹ. ̰  Ͼ Ǽµ װ Ծ׿

- auto(boxing & unboxing)
¥ ̰ ûǔf ʹ ϴٰ ߾.
T ̽ S , T S boxing( unboxing 򰥸׿ -_-^)ؼ Ҽ֧c.
۸ ãƺ ٷγڴµ ¥ ϳã غ.. ư.
߿ ϳ Ƹ ö󰡼 ̽(Ȥ ü) ٷ Ձ°ǵ
LSP ̶ . ̽(Ȥ ذü)
functino signature. Ʈڵ ״ ִ signature..
װ ޸𸮿 ϴ, (OOP 翬Ѹ) ӵ ü signature ״ ϴ
ʹ 翬 . 翬 ڽ ڽ̵Ǿϰ.
ٵ ڽ(Ȥ S T ijҶ) Ҷ is instance of ϴ°ɷ մϴ.
ü ° ڵ߿ Ϸ?ڸ?? ˾Ƽ ˻ .
ü ijϴ° װ instanceof signature˻ѹ ϴٰ մϴ.
ƴ, ϸ ? ϳ׿.

- date on heap vs. stack
ϳ ̰ ϳ Ҷ ̰.
Ҷ ϰ Լ scope ٴϸ ٴϴµ
¥ ̰͵ Ҷ ̳, return ÿ poppingǸ鼭 ܳ ׷̶
ǰ ⵵ϰ Ծ׿.
(ν Ŀsystemϰ user process ԵҶ ҽڵ ġ cpu ϴٱȯϸ鼭)
(ġ.. κƮ, ڱ ͸ Ǥ͸ üǴ ? )
ÿ÷οǾ code ħϴ° üδ ߸𸣰ϴ. ̺κе ؾ߰ڳ׿.

- immutability, mutability, thread safety prob.
̹ͺ ͺ 氡Ѱ Ͻô°Ͱ׿.
̽㿡 Ȯ Ҿµ, ܼ const Ǵ° ų
ü ٸ ҴǴ° ƴ, ش礩ϴ ޸𸮱, ü ü
Ұ ΰ. ϰԵǸ ο ޸𸮸 ҴϿ װ ռ ѵڿ
޸ ּҰ ȯִ ִ󱸿. ߸ϸ ޸ ״
̰ ʿ . ̾ multi thread / thread safety ū ǰڳ׿.
thread  𸣴µ, ִ ߰ųŰ ִ 븸ϴµ
̶ Һ ν д° ٴ° ϰ
۾ϴ thread ڱ⸸ ο ԵǾ ϰ 浿̾.
̰ſܿ synchronized Ű ֶ, ̰ǾƸ ŷŴ°Ű. ʾ Ȯ 𸣰ڳ׿.
Ҽ? Ƹϰڧc? ڹε..

- definition of pure virtual function, interface vs abstract class
Լ, pvf .. abstract classȿ ִ Ϻִ Լ ϴ°ɷ ˰ϴ.
interfaceϰ ab- ٸ. interface function signature, definition Ҽմ¹ݸ鿡
abstract Լ Ҽ ? ſ interface wrapping, boxing/casting
ܵ ִ ݸ鿡 asbstract ̸ Ͽ ؾ߸




׿. ̷ ̾߱Ϸ ƿ ȭ سƾ߰ڳ׿.
ٽŰ ¤ּż 帳ϴ ڸ۴. οϰڽϴ.
14 մ 2019-02-11 11:11:11
12 ڵǰٽϴٴ ٵ Ѱ̻ ߴٷ ʳ?

ư ٴϴ. ΰ ⸣ ͵ ߿ϰ..  ٷ°͵ ظŭ ߿Ѱ ϴ. ˰U ƴϴٺ ΰ ϴµ api sugar syntax hack? ھ.
15 մ 2019-02-11 13:34:55
ɷڴ ⸸ ߽ÿ
16 մ 2019-02-11 13:35:00
λ
17 մ 2019-02-11 15:02:51
λ ܵǼ Ⱥ̴°ǰ...
18 մ 2019-02-12 14:18:43
ܵ ¾
̶ 𸦱 ҰŰ
19 մ 2019-02-12 16:19:06
boxing, unboxing ؿ? ʿؿ?
boxing unboxing ?

heap, stack ΰ ־? ޶?
heap or stack ϸ ȵǿ?
̸ heap ̿?
̸ stack ̿?
Ͱ heap ִ°Ŷ stack ִ°Ŷ ޶ ƴϸ ƿ?
heap stack ϴ°ǰ? ƴϸ ׷  ϳ?
׷ ϴ°ɱ?

...
20 մ 2019-02-12 20:55:45
18 ,, ...
21 մ 2019-02-12 22:01:35
19 ϱ ׿..

ϰԵ п κи Ҽְԉѽϴ.

boxing unboxing ܼ casting ƴϾ׿. Ѱ¤־ϴ.
boxing unboxing primitive object casting ̶ ǰڳ׿.

ʿ , object ڷ ȹȭؼ پ Լ ÷ǵ Ŭ վ .
̴ .NET 2.0 ķ generic ο ׿.
ArrayList Object ޾Ҵµ, Generic 鼭 boxingؼ objectȭ Ű ʾƵ Ѿ.

帮, boxing/unboxing ʿ
primitive, object ʿ ڽϴ. , nullableϰ ..


https://docs.microsoft.com/en-us/dotnet/framework/performance/performance-tips
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/types/boxing-and-unboxing





heap stack OSð loadǰ  Ⱦ IJ ¤ ѰͰϴ.
ܹ޴° ׿.. 𸣴ºκи ¤ֽô ҵ..

켱, heap stack OS . OS ʴٰ ڽմϴ.
code source ÷ pc Ű ϳ stack main() (Ȥ Լ)
call chaining stack 帧 ϰ, call , Լ
Լ block(scope) Բ ִ local var register Ȥ ޸ ּҵ ϴ.
(ս 0 äʴ reference )

̿ ݸ鿡 heap ִ (dynamic̶ؾϳ) ڽ block(scope) ܵ
ʽϴ. reference ִٸ. 翬 ΰ ʰڽϴ.

̰ ū̶ ϴ.
staticѵ globalѰ data . scope, ֱⰡ ־ ϴϱ.
۷ M  gc , memory leak̶ .
apm ٸ data ˻ صǰڳ׿..



׳ ߸𸣰ڽϴ OSå . ѹ оڽϴ.
data, heap, stack ?
Ȯ ʿ信 Ѱ ƴ϶, ϴٺ ׾ Ȯ ΰ ϴ.
ġ ó øִٰ, ؾ߰ڴ, ׷ٰ Ű,


block Ȯ尡 ޸𸮸 ־ Ű⵵մϴ.
޸ ȯ ȸ ʿ Ű...

stack heap ߴ, ʿ Ǹ ֽǼ ֳ..?
22 մ 2019-02-12 22:06:42
data/code, heap, stack ó Ȯմϴ
23 մ 2019-02-12 22:19:47
stack ߰ ִ ޸ ũ⸦ øų ʿ ׷ heap Ű

װ̶ ؼ غ stack ׾Ƶа spatial locality cache hit ߵż ӵ 켼 װ ȭ ʿ䰡 尡 ̷ heap ޸𸮸 ִٴ ±

̷ſ ڼ غ    ؾ 𸣰ڳ׿. ʿ к ð ƹ Ͻϸ鼭 ± ..
24 մ 2019-02-12 23:23:56
޸ص״ٰ ٽ о
25 մ 2019-02-13 07:08:55
մϴ.

ٵ װ ׷ Ŀ Ư¡̶

Ǿ?
ÿ ϵ ϸ ȵƾ?

׳ ó ʿҰŶ ϰ ϴٰ Ŀ ʿ伺 backward compatibility ð ָ ִ ġ ǰ?


쿣 ã ˻ϴ ð ־
. ȸǸ ã. ϳ ټִ° .  ִ°͵ ѵ װ ޸ 巹̶ Ϳ ״ °Ŷ ð ̰ ϰ  ƴϷ...
26 մ 2019-02-14 21:48:10
α׷ ī͸ ȿ ִ° ?
27 մ 2019-02-15 07:02:56
α׷ ī͸ ȿ غ ׿. ¥ ֱ Ф

ī. νƮ Űִµ, JE JMP پ ȵǴ°Ŵ ִ Ϸķ Ϸ???

Ȥ ֽ ֳ??
28 մ 2019-02-15 10:50:11
ִ ε ݾƿ?
'' ȣȯ.
׷ ° '' ִٴ°.
29 մ 2019-02-15 13:03:05
28 //

ִ (FILO manner ) .

׷ ƴѰ?
1. ۾ (current Thread) ڿ context ִ
2. 1 ̾Ͼ ٸ Thread ̸ ̾ ְ.
3. 1 data , data ƴϱ ȿ .


߿ ӻ ִٸ ˷ּ.
ζ, ȿմϴ.

stack ȯ 1 ̻ ߴٸ, data ƴϾ.

׷ heap Űϴ.

÷ Ҷ ó θϰ ߵ ڴʰ ƴұ ׷ ɽ غ Դϴ... ġ MS api ׻ reserved param δ°ó.. װ Ѹ.. ¥..
30 մ 2019-02-15 13:04:04
28 // ݴ ص帮,

Ѱ ÿ Ǿ,
̿ ɻ ̽ ɻ å  ѰŶ մϴ.
31 մ 2019-02-15 13:33:31
> ִ (FILO manner ) .
> ׷ ƴѰ?

ƴ϶ ; Ǵ° ƴѰ
32 մ 2019-02-15 15:37:03
־ ϴ ֳ? øƼ?
33 մ 2019-02-17 11:11:14
̸ ̾߱ ߵǴµ ư ϰ ڸ α׷īʹ ñ ȿ ϴ.

׸ 1 ũ CPU Ŭ ׸ŭ پװ

׸ heap ʿ ũ ְ, 巹 ʿϱ⵵ մϴ.

ٵ  ʾƿ. Z ݵü ι̳ Ұ ƴϸ.
34 մ 2019-02-23 10:59:19
Go
ۼϽ ϴ.
( ȸ)
: c++ ? [10]
: html 帳ϴ. Ф [3]
̿ | / | ޹ħ | | TE31 | : 11.5%
ǽð Issue Ŀ´Ƽ TE31 [] 2002-2024
TOP arrow_upward