변수 이름이 웹 사이트의 성능에 영향을 줍니까?


10

변수 이름이 웹 사이트 성능에 영향을 줍니까? 나는 이것이 매우 적을 것이라고 알고 있지만 여전히 성능 측면에서 긴 변수 이름을 선택하지 않는 이유를 제공 할 수 있습니까?


2
이 변수는 어디에 있으며 어떤 언어로 작성되어 있습니까?
Luke Graham

16
당신의 추론이 (질의가있는) 성능이라면 짧고 비논리적 인 변수 이름을 절대로 선택해서는 안됩니다. 다른 사람들이 읽을 수있는 소스 코드는 컴퓨터를 만족시키지 않고 미세한 성능 향상을위한 것이 아닙니다.
Michael JV

나는 PHP를 사용하고 있습니다.
Avinash

2
... 그리고 xpertdeveloper.com을 소유하고 있습니까?
Jim G.

3
안녕 Avinash 당신은 당신의 질문에 이것이 사실 일 수 있다고 생각한 이유를 설명 할 수 있습니까?

답변:


17

성능 측면에서 긴 변수 이름을 선택하지 않는 이유를 제공 할 수 있습니까?

Michael은 대답을 다루었지만 (예 : 아니요) 변수 이름은 프로그래머 성능에 영향을줍니다 . 새로운 개발자 나 코드에 익숙하지 않은 사람을 키우는 경우 길고 혼란스러운 변수 이름을 사용하면주의가 산만 해지고 이해 과정이 느려질 수 있습니다.

일반적으로 읽기 쉬운 짧은 변수 이름을 사용하려고합니다. 10 년 동안 코드를 무시하고 모든 것을 다시 이해해야한다고 상상해보십시오. 오히려 "getInput"또는 "getInputFromUserWhoInputsStringOrElseInformReaderOfError"를 읽으시겠습니까? (과장 : P)

그러나 이름이 약간 길면 도움이 될 수 있습니다. 예를 들어 getBirthdayInput ()은 getInput ()보다 훨씬 더 설명 적입니다. 한 지점으로 단순화하고 싶지만 지나치게 단순화하는 것도 문제가 될 수 있습니다.


6
"getInputFromUserWhoInputsStringOrElseInformReaderOfError"를 찾으면 긴 이름을 읽는 것이 좋습니다. "getInput"을 찾은 경우이 함수가 무엇인지 문서를 읽을 필요가 없습니다. 그리고 10 년 후 문서가 잘못되었거나 불완전하거나 누락되었습니다. getInputFromUserWhoInputsStringOrElseInformReaderOfError는 확실히 길지만, 그것이 긴 것이 무엇인지 이해하는 것이 좋습니다 (그리고 여성이 크기가 중요하지 않다고 말하지는 않습니다).
Dainius

이 경우에는 동의하지 않습니다. 코드를 읽음으로써 getInput ()이 무엇을 이해하는지, 특히 "잘못된 입력"또는 그 직후에 무언가를 인쇄하는 경우 이해하기가 쉽다고 생각합니다. 더 긴 이름이 더 나을 수있는 경우가 있습니다. 편집하겠습니다!
BlackJack

그것은 문맥에 달려 있지만 내 경험상 더 긴 이름이 더 좋습니다 (그러나 getInputFromUserWhoInputsStringOrElseInformReaderOfError는 아닙니다). file.read ()가 file.readAllFileAsByteArray ()보다 빠르기 때문에 컨텍스트가 정말로 중요합니다. 그러나 일반적으로 말했듯이 IMHO 긴 이름은 더 많은 정보를 제공합니다.
Dainius

1
문서가 잘못되었거나 불완전하거나 누락 된 경우 코드베이스가 어두워집니다.
Christopher Mahan

2
이것은 묻지 않은 질문에 대한 답변입니다.

16

아닙니다. 일반적으로 코드가 컴파일 될 때 변수 이름은 참조하는 메모리 주소로 바뀝니다. 컴퓨터는 변수 이름에 대해 아무것도 모릅니다. 그들은 값이 어디에 저장되어 있는지 알고 싶어합니다.

변수는 기호 일뿐입니다. 16 진수 값을 이름으로 바꾸므로 프로그래머는 자신이하는 일을 더 쉽게 이해할 수 있습니다. 따라서 더 짧은 변수 이름을 선택해도 성능이 향상되지 않습니다.

즉, 컴파일 시간과 JIT 첫 해석에서 약간의 개선 (그리고 미세한 이야기)이 향상 될 수 있지만 파서는 변수 이름을 읽는 데 약간의 CPU 사이클이 필요하지 않기 때문입니다. 이것은 일회성 비용이며 성능에 대해 걱정할 때 통계적으로 중요하지 않습니다.


11
귀하의 답변은 응용 프로그램 프로그래밍에 맞지만 OP는 웹 사이트를 참조하므로 해석 언어를 사용하고있을 가능성이 있습니다. 이 경우 파일에서 코드를 읽은 다음 해석해야합니다. 이 경우 변수 이름이 길수록로드 및 구문 분석하는 데 시간이 더 걸립니다. 그러나 성능 향상은 중요하지 않으며 프로그래머가 코드를 읽고 이해해야하는 번거 로움으로 인해 크게 상쇄됩니다.
Gavin Coates

1
@Gavin "JIT 첫 해석"과 같이 해석 된 언어에도 적합합니다. 대부분의 인터프리터 언어는 AFAIK라는 한 줄씩 실행하지 않고 컴파일 할 때 컴파일됩니다.
Michael K

1
Michael-컴파일하려면 파일을 먼저 메모리로 읽어야합니다. 이 프로세스는 파일 길이에 따라 더 오래 걸립니다. 더 긴 변수 이름 = 더 긴 파일.
Gavin Coates

질문은 PHP로 태그됩니다. PHP에는 아직 JIT가 없습니다. 올해 말에 예정된 8.0 릴리스의 새로운 기능이 될 것입니다. 실행 전에 바이트 코드로 컴파일되며 바이트 코드는 일반적으로 웹 서버에 캐시되어 여러 요청에 사용됩니다.
bdsl

8

op 코드 캐시 ( "PHP 가속기"라고도 함)를 사용하지 않는 한 실제로 영향을 미칩니다. 그러나 그 영향은 너무 낮아 무시할 수 있습니다. op 코드 캐시를 사용하면 영향이 없습니다.


1
그리고 성능에 너무 관심이 있다면 변수 이름을 줄여서 몇 번의주기를 얻는 것을 고려한다면 op 코드 캐시를 사용하지 않는 것은 범죄가 될 것입니다 ... C와 같은 컴파일 된 언어로 전환하는 것이 좋습니다.
SF.

그러나 분명히 그 영향은 누적 적이므로 응용 프로그램이 클수록 영향이 커집니다.
n00dles

Zend Opcache는 몇 년 동안 PHP와 함께 제공되므로 모든 사람이이를 사용해야합니다. 나는 그것이 일반적으로 기본적으로 활성화되어 있다고 생각합니다.
bdsl

3

Michael은 응용 프로그램 프로그래밍에 적합하지만 귀하의 질문은 해석 된 언어 인 PHP를 사용한 웹 개발에 대한 것입니다. 이 경우 파일에서 코드를 읽은 다음 해석해야합니다. 이 경우 변수 이름이 길수록로드 및 구문 분석하는 데 시간이 더 걸립니다.

그러나 이렇게하면 성능이 크게 저하되지 않으며 전체 스크립트에서 밀리 초 단위로 표시 될 수 있습니다. 항상 샘플 스크립트로 시도해 볼 수 있으며 http://www.developerfusion.com/code/2058/determine-execution-time-in-php/에 설명 된 것과 같은 타이밍 방법을 사용할 있지만 아마도 그렇지 않을 것입니다 재시도 간의 실행 시간은 변수 이름 길이의 차이보다 훨씬 더 다양하므로 상당한 재시도 횟수를 수행하고 평균을 가져와야합니다. 먼 의미있는 평균을 얻으십시오.

BlackJack이 지적했듯이 이름이 길수록 이해하기가 훨씬 어려울 수 있으며 입력을 위해 많은 추가 노력이 필요합니다 (오타가 발생하기 쉽습니다). 약간의 성능 향상이있을 수 있지만 이것이 프로그래머를위한 추가 번거 로움을 정당화하지는 않습니다. 따라서 짧고 간결하며 이해하기 쉬운 변수 이름이 선호됩니다.

간단히 말해 변수 길이 이름에 대해 걱정하지 말고 깨끗하고 의미있는 코드 작성에 집중하십시오.


1

아마도 :

서버 코드는 일반적으로 컴파일되며 변수 이름 길이는 언급 된 이유로 영향을 미치지 않습니다. 그러나 변수 이름을 사용하여 마크 업을 작성하면 다양한 문자열 작업이 수행됩니다. HTTP 응답 (마크 업 / 반환 된 json / 반환 된 데이터 포함)이 더 크기 때문에 차이는 무시할 수 있지만 약간 더 오래 걸립니다 . JavaScript가 축소되지 않으면 더 큰 파일이되어 클라이언트로 이동하는 데 시간이 더 걸립니다.

JavaScript 파일을 축소하는 것 외에도 웹 응용 프로그램 / 웹 사이트에 대한 최적화 노력은 다른 측면에 더 잘 사용될 것입니다.


1

그렇습니다.하지만 당신이 생각하는 의미는 아닙니다.

변수 이름이 잘못되면 개발자가 소스 코드를 쉽게 혼동 할 수 있습니다. 읽기 어렵고 이해하기 어려울 것입니다.

결국, 소스 코드를 유지하기가 어려워지고 그것을 발전시키는 것은 거의 불가능합니다. 이것은 필연적으로 높은 유지 보수 비용, 높은 개발 비용, 더 많은 버그 및 성능 저하로 이어질 것 입니다.

변수 이름은 런타임에 전혀 영향을 미치지 않으며 컴파일 타임에는 전혀 무시할 수 있습니다. 그러나 나쁜 이름은 필연적으로 성능을 떨어 뜨릴 수 있습니다. 왜냐하면 아무도 코드를 이해하지 못하기 때문에 코드가 서로 해킹되어 결국에는 상황이 악화되기 때문입니다.

좋은 변수 이름에 대해 알아 보려면 다음을 읽으십시오. http://tottinge.blogsome.com/meaningfulnames

매우 긴 변수 이름이 필요하다고 생각되면 코드의 아키텍처가 잘못되었음을 의미합니다. 변수 이름은 항상 컨텍스트 (네임 스페이스, 클래스 이름, 파일 이름, 폴더, 함수 이름 등)로 표현됩니다. 따라서 이름을 명시 적으로 길어야하는 경우 DOESN ' 이라는 이름을 지정하려는 것은 T 여기에 . 이 경우이 코드를 적절한 장소에 배치하거나 존재하지 않는 경우 해당 장소를 작성하십시오.


0

PHP와 관련하여 대답은 분명히 그렇습니다.

차이를 만들지 않는다고 말하는 답변이 반드시 올바른 것은 아닙니다. 예를 들어, 몇 줄의 작은 PHP 스크립트가 있지만 작업을 마치기 전에 약 1,950,000 번 반복해야하므로 스크립트의 단일 실행이 눈에 띄지 않을지라도 두 번째 부분은 실질적으로 합쳐집니다. 여러 번 반복합니다.


1
그러나 당신은 틀 렸습니다. 괜찮은 PHP 인터프리터는 코드를 한 번만 구문 분석합니다. PHP 인터프리터를 쓰는 사람들은 바보가 아닙니다.
gnasher729

@ gnasher729 통역사 또는 전체 서버의 작동 방식을 가정하고 있으므로 절대 그렇게하지 않아야합니다. 실행마다 한 번만 구문 분석하더라도 모든 실행에서 구문 분석을 수행하고 구문 분석 된 표현을 캐시하지 않을 수 있습니다 (다른 시스템은이를 수행하지만 미리 알 수는 없습니다). 일반적으로 스크립트가 더 많은 바이트 일수록 구문 분석하는 데 더 오래 걸립니다. 따라서 일반적으로 Diorthotis는 잘못된 것이 아니며 특정 시스템에 대해서만 틀릴 수 있습니다.
Mecki

0

코드를 읽기 어렵게 만드는 짧은 이름을 사용할 수 있습니다. 마이크로 초를 저장합니다. 그러나 코드를 읽기 어렵 기 때문에 코드를 개선하고 더 빨리 만드는 것이 더 어렵습니다. 따라서 짧은 이름을 가진 유지 관리 할 수없고 개선 할 수없는 코드는 결국 훨씬 느리게 실행됩니다.

따라서 귀하의 질문에 답변하기 위해 ( "성능에 영향을 미치나요") 그렇습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.