728x90
반응형

Performance 26

JavaScript 링크 "#" vs "javascript : void (0)"

질문 : JavaScript 링크 "#"또는 "javascript : void (0)"에는 어떤 "href"값을 사용해야합니까? 다음은 JavaScript 코드 실행만을 목적으로하는 링크를 작성하는 두 가지 방법입니다. 기능, 페이지로드 속도, 유효성 검사 목적 등에서 어느 것이 더 낫습니까? function myJsFunc() { alert("myJsFunc"); } Run JavaScript Code 또는 function myJsFunc() { alert("myJsFunc"); } Run JavaScript Code 답변 javascript:void(0) 합니다. 세 가지 이유. # 사용을 장려하면 필연적으로 다음과 같은 함수의 반환 값을 사용하게됩니다. function doSomething() { ..

프로젝트 오일러와의 속도 비교 : C vs Python vs Erlang vs Haskell

질문 : 프로젝트 오일러와의 속도 비교 : C vs Python vs Erlang vs Haskell 저는 Project Euler 에서 문제 # 12 를 프로그래밍 연습으로 가져와 C, Python, Erlang 및 Haskell의 내 (최적은 아님) 구현을 비교했습니다. 더 높은 실행 시간을 얻기 위해 원래 문제에서 설명한 것처럼 500 대신 1000 이상의 제수가있는 첫 번째 삼각형 숫자를 검색합니다. 결과는 다음과 같습니다. C: lorenzo@enzo:~/erlang$ gcc -lm -o euler12.bin euler12.c lorenzo@enzo:~/erlang$ time ./euler12.bin 842161320 real 0m11.074s user 0m11.070s sys 0m0.000s ..

Python 3에서“1000000000000000 in range (1000000000000001)”가 빠른 이유

질문 : Python 3에서“1000000000000000 in range (1000000000000001)”가 왜 그렇게 빠른가요? 실제로 Python 3의 객체 유형 인 range() 함수는 생성기와 유사하게 즉시 내용을 생성한다는 것을 이해합니다. 이 경우 1 천조가 범위 내에 있는지 확인하려면 1 천조 개의 값을 생성해야하므로 다음 줄에 과도한 시간이 걸릴 것으로 예상했을 것입니다. 1000000000000000 in range(1000000000000001) 게다가, 내가 얼마나 많은 0을 더 했든간에 계산은 거의 같은 시간 (기본적으로 순간적)이 걸리는 것 같습니다. 나는 또한 이와 같은 것을 시도했지만 계산은 여전히 거의 즉각적입니다. 1000000000000000000000 in range..

Python에서 경과 시간을 측정하는 방법

timeit 질문 : Python에서 경과 시간을 측정하는 방법은 무엇입니까? 내가 원하는 것은 내 코드의 어딘가에서 시간을 계산 한 다음 전달 된 시간을 가져와 몇 가지 기능을 실행하는 데 걸린 시간을 측정하는 것입니다. timeit 모듈을 잘못 사용하고 있다고 생각하지만 문서가 혼란 스럽습니다. import timeit start = timeit.timeit() print("hello") end = timeit.timeit() print(end - start) 답변 두 지점 사이의 경과 벽시계 시간을 측정하려면 time.time() 사용할 수 있습니다. import time start = time.time() print("hello") end = time.time() print(end - start)..

[javascript] call와 apply의 차이점

질문 : 전화와 신청의 차이점은 무엇입니까? call 을 사용하는 것과 함수를 호출하기 위해 apply 하는 것의 차이점은 무엇입니까? var func = function() { alert('hello!'); }; func.apply(); vs func.call(); 앞서 언급 한 두 가지 방법간에 성능 차이가 있습니까? call 오버 apply 을 사용하는 것이 가장 좋으며 그 반대의 경우는 언제입니까? 답변 apply arguments 를 배열로 사용하여 함수를 호출 할 수 있다는 것입니다. call 하려면 매개 변수를 명시 적으로 나열해야합니다. 유용한 니모닉은 " A 는 rray, C 는 c omma"입니다. 신청 및 전화 에 대한 MDN의 문서를 참조하십시오. 의사 구문 : theFunction..

Python 애플리케이션의 메모리 사용량 확인하는 방법

질문 : 어떤 Python 메모리 프로파일 러가 권장됩니까? 내 Python 애플리케이션의 메모리 사용량을 알고 싶고 특히 어떤 코드 블록 / 부분 또는 객체가 대부분의 메모리를 소비하는지 알고 싶습니다. Google 검색에 따르면 상용 제품은 Python Memory Validator입니다 (Windows 전용). 그리고 오픈 소스는 PySizer 와 Heapy 입니다. 나는 아무도 시도하지 않았기 때문에 어떤 것이 가장 좋은지 알고 싶었습니다. 대부분의 세부 정보를 제공합니다. 내 코드를 최소한 또는 전혀 변경해야합니다. 답변 guppy3 는 사용하기 매우 간단합니다. 코드의 어느 시점에서 다음을 작성해야합니다. from guppy import hpy h = hpy() print(h.heap()) 이..

CSS가 항상 Javascript보다 먼저 나와야 하는 이유

질문 : CSS가 항상 Javascript보다 우선해야합니까? 온라인의 수많은 곳에서 JavaScript 이전에 CSS를 포함하라는 권장 사항을 보았습니다. 그 이유는 일반적으로 다음 과 같은 형식입니다 . CSS와 자바 스크립트를 주문할 때 CSS가 먼저 나오기를 원합니다. 그 이유는 렌더링 스레드에 페이지를 렌더링하는 데 필요한 모든 스타일 정보가 있기 때문입니다. JavaScript 포함이 먼저 오는 경우 JavaScript 엔진은 다음 리소스 세트로 계속 진행하기 전에 모든 것을 구문 분석해야합니다. 이것은 렌더링 스레드가 필요한 모든 스타일을 가지고 있지 않기 때문에 페이지를 완전히 표시 할 수 없음을 의미합니다. 내 실제 테스트는 매우 다른 것을 보여줍니다. My test harness 다음 ..

잘 작성된 C 코드보다 어셈블리가 더 빠른 경우의 예

질문 : 조립이 C보다 빠른 때는 언제입니까? 어셈블러를 아는 이유 중 하나는 때때로 더 높은 수준의 언어, 특히 C로 코드를 작성하는 것보다 더 성능이 좋은 코드를 작성하는 데 사용될 수 있다는 것입니다. 그러나 전적으로 잘못된 것은 아니지만 어셈블러를 실제로 사용하여 더 많은 성능의 코드를 생성 할 수있는 경우는 극히 드물고 어셈블리에 대한 전문 지식과 경험이 필요하다고 여러 번 언급 한 적이 있습니다. 이 질문은 어셈블러 명령어가 기계별로 다르고 이식 불가능하다는 사실이나 어셈블러의 다른 측면에 대해서도 설명하지 않습니다. 물론이 외에도 어셈블리를 아는 데는 많은 이유가 있지만, 이것은 어셈블러 대 상위 수준 언어에 대한 확장 된 담론이 아니라 예제와 데이터를 요청하는 특정 질문을 의미합니다. 누구..

개발관련/other 2021.11.10

PyPy가 6.3 배 빠르면 CPython보다 PyPy를 사용하면 안되는 이유

질문 : PyPy가 6.3 배 빠르면 CPython보다 PyPy를 사용하면 안되는 이유는 무엇입니까? PyPy 프로젝트에 대해 많이 들었습니다. 그들은 그것이 그들의 사이트 에 있는 CPython 인터프리터보다 6.3 배 빠르다고 주장합니다. Python과 같은 동적 언어에 대해 이야기 할 때마다 속도는 가장 중요한 문제 중 하나입니다. 이를 해결하기 위해 PyPy가 6.3 배 더 빠르다고 말합니다. 두 번째 문제는 병렬성, 악명 높은 GIL (Global Interpreter Lock )입니다. 이를 위해 PyPy는 GIL-less Python을 제공 할 수 있다고 말합니다. PyPy가 이러한 큰 과제를 해결할 수 있다면 더 많은 채택을 방해하는 약점은 무엇입니까? 즉, 일반적인 Python 개발자 인..

JavaScript에서 숫자를 문자열로 변환하는 가장 좋은 방법

질문 : JavaScript에서 숫자를 문자열로 변환하는 가장 좋은 방법은 무엇입니까? 숫자를 문자열로 변환하는 "가장 좋은"방법은 무엇입니까 (속도 이점, 명확성 이점, 메모리 이점 등)? 몇 가지 예 : String(n) n.toString() ""+n n+"" 답변 이렇게 : var foo = 45; var bar = '' + foo; 실제로는 일반적으로 간단한 편의를 위해 이렇게했지만 1,000 회 이상의 반복이 .toString() 대한 이점이 있습니다. 여기에서 성능 테스트를 참조하십시오 (내가 아니라 직접 작성했을 때 발견) : http://jsben.ch/#/ghQYR 위의 JSPerf 테스트를 기반으로 가장 빠름 : str = num.toString(); 당신이 0.1 초에서 어떤 방법을..

PHP 배열 저장에 선호되는 방법 (json_encode vs serialize)

질문 : PHP 배열 저장에 선호되는 방법 (json_encode vs serialize) 캐싱을 위해 데이터의 다차원 연관 배열을 플랫 파일에 저장해야합니다. 때때로 웹 앱에서 사용하기 위해 JSON으로 변환해야 할 필요가있을 수 있지만 대부분의 경우 PHP에서 직접 배열을 사용합니다. 이 텍스트 파일에 배열을 JSON 또는 PHP 직렬 배열로 저장하는 것이 더 효율적입니까? 나는 둘러 보았고 최신 버전의 PHP (5.3)에서 json_decode 가 실제로 unserialize 보다 빠릅니다. 필요한 경우 사람이 읽기 쉽기 때문에 현재 배열을 JSON으로 저장하는쪽으로 기울고 있습니다. PHP와 JavaScript 모두에서 아주 적은 노력으로도 사용할 수 있습니다. 디코딩 속도가 빠릅니다 (인코딩에 ..

Python 코드가 함수에서 더 빠르게 실행되는 이유

질문 : Python 코드가 함수에서 더 빠르게 실행되는 이유는 무엇입니까? def main(): for i in xrange(10**8): pass main() Python의이 코드는 다음에서 실행됩니다 (참고 : 타이밍은 Linux의 BASH에서 시간 함수로 수행됩니다.) real 0m1.841s user 0m1.828s sys 0m0.012s 그러나 for 루프가 함수 내에 위치하지 않으면 for i in xrange(10**8): pass 그런 다음 훨씬 더 오랜 시간 동안 실행됩니다. real 0m4.543s user 0m4.524s sys 0m0.012s 왜 이런거야? 답변 전역 변수보다 지역 변수를 저장하는 것이 더 빠른 이유를 물을 수 있습니다. 이것은 CPython 구현 세부 사항입니다...

Android 에뮬레이터의 속도를 높이는 방법

질문 : Android 에뮬레이터가 왜 그렇게 느린가요? Android 에뮬레이터의 속도를 어떻게 높일 수 있습니까? 나는 2.67 GHz의 셀러론 프로세서를 가지고, 그리고 86 Windows XP Professional의 시스템에 RAM의 1.21 GB했다. 내 이해는 Android 에뮬레이터 가 그러한 컴퓨터에서 상당히 빨리 시작되어야한다는 것입니다. 그러나 나에게는 그렇지 않습니다. IDE, SDK, JDK 등을 설정하는 모든 지침을 따랐고 에뮬레이터를 빠르게 시작하는 데 성공했지만 이는 매우 드뭅니다. 가능하면이 문제를 어떻게 해결할 수 있습니까? 홈 화면을 시작하고로드하더라도 매우 느립니다. 버전 3.5 (Galileo) 및 3.4 (Ganymede)에서 Eclipse IDE 를 사용해 보았습..

Java를 사용하여 줄 단위로 큰 텍스트 파일을 읽는 방법

질문 : Java를 사용하여 줄 단위로 큰 텍스트 파일을 어떻게 읽을 수 있습니까? Java를 사용하여 줄 단위로 약 5-6GB의 큰 텍스트 파일을 읽어야합니다. 어떻게 빨리 할 수 있습니까? 답변 일반적인 패턴은 try (BufferedReader br = new BufferedReader(new FileReader(file))) { String line; while ((line = br.readLine()) != null) { // process the line. } } 문자 인코딩이 없다고 가정하면 데이터를 더 빨리 읽을 수 있습니다. 예를 들어 ASCII-7이지만 큰 차이는 없습니다. 데이터로 수행하는 작업이 훨씬 더 오래 걸릴 가능성이 높습니다. line 누출 범위를 피하는 덜 일반적인 패턴입니..

Java에서 2 * (i * i)가 2 * i * i보다 빠른 이유

질문 : Java에서 2 * (i * i)가 2 * i * i보다 빠른 이유는 무엇입니까? 다음 Java 프로그램은 실행하는 데 평균 0.50 초에서 0.55 초가 걸립니다. public static void main(String[] args) { long startTime = System.nanoTime(); int n = 0; for (int i = 0; i < 1000000000; i++) { n += 2 * (i * i); } System.out.println((double) (System.nanoTime() - startTime) / 1000000000 + " s"); System.out.println("n = " + n); } 2 * (i * i) 를 2 * i * i 바꾸면 실행하는 데 0...

C ++ 컴파일이 오래 걸리는 이유

질문 : C ++ 컴파일이 왜 그렇게 오래 걸리나요? C ++ 파일을 컴파일하는 것은 C # 및 Java와 비교할 때 매우 오래 걸립니다. 일반적인 크기의 Python 스크립트를 실행하는 것보다 C ++ 파일을 컴파일하는 데 훨씬 더 오래 걸립니다. 현재 VC ++를 사용하고 있지만 모든 컴파일러와 동일합니다. 왜 이런거야? 내가 생각할 수있는 두 가지 이유는 헤더 파일을로드하고 전처리기를 실행하는 것이었지만 그것이 왜 그렇게 오래 걸리는지 설명 할 수없는 것 같습니다. 답변 몇 가지 이유 헤더 파일 모든 단일 컴파일 단위에는 수백 또는 수천 개의 헤더가 (1)로드되고 (2) 컴파일되어야합니다. 전처리 기가 헤더 컴파일 결과가 모든 컴파일 단위마다 다를 수 있도록 보장하기 때문에 일반적으로 모든 컴파일 ..

Collatz 추측을 테스트하기위한 C ++ 코드가 손으로 작성한 어셈블리보다 빠르게 실행되는 이유

질문 : Collatz 추측을 테스트하기위한 C ++ 코드가 손으로 작성한 어셈블리보다 빠르게 실행되는 이유는 무엇입니까? 이 두 가지 솔루션을 Project Euler Q14 , 어셈블리 및 C ++로 작성했습니다. 그들은 Collatz 추측 을 테스트하기 위해 동일한 무차별 대입 접근 방식을 구현합니다. 조립 솔루션은 다음과 같이 조립되었습니다. nasm -felf64 p14.asm && gcc p14.o -o p14 C ++는 다음과 같이 컴파일되었습니다. g++ p14.cpp -o p14 어셈블리, p14.asm : section .data fmt db "%d", 10, 0 global main extern printf section .text main: mov rcx, 1000000 xor rd..

프로젝트의 여러 CSS 파일에서 사용하지 않는 CSS 정의를 식별하는 방법

질문 : 프로젝트의 여러 CSS 파일에서 사용하지 않는 CSS 정의를 식별하는 방법CSS 파일이 많이 들어 왔고 이제는 정리하려고합니다.전체 프로젝트에서 사용하지 않는 CSS 정의를 어떻게 효율적으로 식별 할 수 있습니까?답변Chrome 개발자 도구 에는 사용하지 않는 CSS 선택기를 표시 할 수 있는 감사 탭이 있습니다.감사를 실행 한 다음 웹 페이지 성능에서 사용하지 않는 CSS 규칙 제거를 참조하십시오.출처 : https://stackoverflow.com/questions/135657/how-to-identify-unused-css-definitions-from-multiple-css-files-in-a-project

"yield"키워드의 기능

질문 : "yield"키워드의 기능은 무엇입니까? yield 키워드의 사용은 무엇이며 어떤 역할을합니까? 예를 들어,이 코드 1 을 이해하려고합니다. def _get_child_candidates(self, distance, min_dist, max_dist): if self._leftchild and distance - max_dist = self._median: yield self._rightchild 그리고 이것은 호출자입니다. result, candidates = [], [self] while candidates: node = candidates.po..

SQLite의 초당 INSERT 성능 향상

질문 : SQLite의 초당 INSERT 성능 향상 SQLite를 최적화하는 것은 까다 롭습니다. C 애플리케이션의 대량 삽입 성능은 초당 85 개의 삽입에서 초당 96,000 개 이상의 삽입까지 다양합니다! 배경 : 우리는 데스크톱 애플리케이션의 일부로 SQLite를 사용하고 있습니다. 애플리케이션이 초기화 될 때 추가 처리를 위해 구문 분석되고 SQLite 데이터베이스에로드되는 XML 파일에 저장된 많은 양의 구성 데이터가 있습니다. SQLite는 빠르고 특별한 구성이 필요하지 않으며 데이터베이스가 단일 파일로 디스크에 저장되기 때문에 이러한 상황에 이상적입니다. 근거 : 처음에 나는 내가보고있는 성능에 실망했습니다. SQLite의 성능은 데이터베이스 구성 방법과 API 사용 방법에 따라 크게 다를 ..

32 비트 루프 카운터를 64 비트로 대체하면 Intel CPU에서 _mm_popcnt_u64의 성능 편차가 발생합니다.

질문 : 32 비트 루프 카운터를 64 비트로 대체하면 Intel CPU에서 _mm_popcnt_u64의 성능 편차가 발생합니다. 대규모 데이터 배열 popcount 하는 가장 빠른 방법을 찾고있었습니다. 매우 이상한 효과가 발생했습니다. 루프 변수를 unsigned 에서 uint64_t 로 변경하면 내 PC에서 성능이 50 % 저하되었습니다. #include #include #include int main(int argc, char* argv[]) { using namespace std; if (argc != 2) { cerr

JAVA의 날짜 연산에서 이상한 결과가 나오는 이유

질문 : 이 두 번을 빼면 (1927 년) 이상한 결과가 나오는 이유는 무엇입니까? 다음 프로그램을 실행하면 1 초 간격으로 시간을 참조하는 두 개의 날짜 문자열을 구문 분석하고 비교합니다. public static void main(String[] args) throws ParseException { SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String str3 = "1927-12-31 23:54:07"; String str4 = "1927-12-31 23:54:08"; Date sDt3 = sf.parse(str3); Date sDt4 = sf.parse(str4); long ld3 = sDt3.getTime() /1000..

스크립트 자체 내에서 Bash 스크립트의 소스 디렉토리를 얻는 방법

질문 : 스크립트 자체 내에서 Bash 스크립트의 소스 디렉토리를 얻으려면 어떻게해야합니까? 해당 스크립트 내부 에서 Bash 스크립트가있는 디렉토리의 경로를 어떻게 얻습니까? Bash 스크립트를 다른 응용 프로그램의 실행기로 사용하고 싶습니다. 작업 디렉토리를 Bash 스크립트가있는 디렉토리로 변경하여 다음과 같이 해당 디렉토리의 파일에 대해 작업 할 수 있습니다. $ ./application 답변 #!/bin/bash SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" 어디에서 호출 되든 스크립트의 전체 디렉토리 이름을 제공하는 유용한 한 줄짜리입니다. 스크립트를 찾는 데 사용 된 경로의 마지막 구성 요소가 심볼릭 링..

개발관련/Linux 2021.06.26

양식 기반 웹 사이트 인증에 대한 확실한 가이드

질문 : 양식 기반 웹 사이트 인증에 대한 확실한 가이드 우리는 Stack Overflow가 매우 구체적인 기술적 질문에 대한 리소스 일뿐만 아니라 일반적인 문제의 변형을 해결하는 방법에 대한 일반적인 지침을 제공해야한다고 믿습니다. "웹 사이트에 대한 양식 기반 인증"은 이러한 실험에 적합한 주제 여야합니다. 로그인 방법 로그 아웃하는 방법 로그인 상태를 유지하는 방법 쿠키 관리 (권장 설정 포함) SSL / HTTPS 암호화 비밀번호 저장 방법 비밀 질문 사용 잊어 버린 사용자 이름 / 암호 기능 교차 사이트 요청 위조 (CSRF) 를 방지하기 위해 임시 값 사용 OpenID "기억하기"확인란 사용자 이름 및 암호의 브라우저 자동 완성 비밀 URL (다이제스트로 보호되는 공용 URL) 비밀번호 안전성..

“Big O”표기법에 대한 일반적인 영어 설명

질문 : “Big O”표기법에 대한 일반적인 영어 설명은 무엇입니까? 가능한 한 적은 형식적인 정의와 간단한 수학을 선호합니다. 답변 참고로, 이것은 Big O 표기법 (상한)과 Theta 표기법 "Θ"(양면 경계)를 거의 확실히 혼동합니다. 제 경험상, 이것은 실제로 비 학문적 인 환경에서의 일반적인 토론입니다. 혼란을 드려 죄송합니다. Big O 복잡성은 다음 그래프로 시각화 할 수 있습니다. Big-O 표기법에 대해 줄 수있는 가장 간단한 정의는 다음과 같습니다. Big-O 표기법은 알고리즘의 복잡성을 상대적으로 표현한 것입니다. 그 문장에는 몇 가지 중요하고 의도적으로 선택된 단어가 있습니다. 상대 : 사과와 사과 만 비교할 수 있습니다. 산술 곱셈을 수행하는 알고리즘을 정수 목록을 정렬하는 알고..

728x90
반응형