Hướng dẫn are backticks slower than other strings in javascript? - backticks có chậm hơn các chuỗi khác trong javascript không?

TL;DR

Sự kết hợp nhanh hơn và nhất quán hơn về tốc độ của nó. Nhưng sự khác biệt là rất ít đối với 1 hoặc 2 biến (dưới .3 giây cho 100 triệu cuộc gọi).

Chỉnh sửa

Sau lần chạy thứ hai, dường như sự kết hợp chủ yếu là nhanh hơn trong hai.


Vì vậy, tôi muốn mở rộng câu trả lời của Analog-Nico bằng cách cung cấp một bài kiểm tra rộng hơn và cũng nhìn (một chút) vào khả năng mở rộng của hai chức năng.

Mã trên Pastebin

Tôi quyết định sử dụng bốn trường hợp thử nghiệm cho mỗi hàm, có một biến ở phía trước, một ở cuối, một ở giữa và hai biến ở giữa. Các thiết lập cơ bản là như nhau. Tôi chỉ sử dụng 100.000.000 lần lặp của hàm và các lần lặp này được chạy 100 lần. Tôi đã sử dụng các cơ chế tương tự để ngăn chặn tối ưu hóa, cụ thể là nhận được tổng độ dài của chuỗi kết quả và ghi lại nó. Tôi cũng đã đăng nhập thời gian cần thiết (để tôi đoán nó sẽ mất bao lâu) nhưng cũng đã lưu nó vào một mảng.

Sau đó, tôi đã tính toán độ lệch trung bình, tối thiểu, tối đa và tiêu chuẩn cho mỗi phương pháp.

Đây là kết quả:

{ 
  sum: { 
    t: { 
      start: 2072751, 
      mid: 2338476, 
      end: 2083695, 
      double: 2950287 
    },
    c: { 
      start: 2086059, 
      mid: 2345551, 
      end: 2074732, 
      double: 2922929 
    } 
  },
  avg: { 
    t: { 
      start: 20727.51,
      mid: 23384.76,
      end: 20836.95,
      double: 29502.87 
    },
    c: { 
      start: 20860.59,
      mid: 23455.51,
      end: 20747.32,
      double: 29229.29 
    } 
  },
  sd: {
    t: {
      start: 335.6251329981114,
      mid: 282.9490809315344,
      end: 286.2220947096852,
      double: 216.40844045461824 
    },
    c: {
      start: 255.4803356424913,
      mid: 221.48744862858484,
      end: 238.98242111084238,
      double: 209.9309074433776 
    } 
  },
  min: { 
    t: { 
      start: 20490, 
      mid: 23216, 
      end: 20588, 
      double: 29271 
    },
    c: { 
      start: 20660, 
      mid: 23258, 
      end: 20534, 
      double: 28985 
    } 
  },
  max: { 
    t: { 
      start: 23279, 
      mid: 25616, 
      end: 22887, 
      double: 30843 
    },
    c: { 
      start: 22603, 
      mid: 25062, 
      end: 22403, 
      double: 30536 
    } 
  } 
}

Các giá trị trong ____ ____ 2 đối tượng dành cho các mẫu, các giá trị trong ____ 3-các đối tượng là để nối. start có nghĩa là biến ở đầu, giữa nó ở giữa, kết thúc rằng ở cuối và gấp đôi có hai biến. sum là tổng của tất cả 100 lần chạy. avg là chạy trung bình, có nghĩa là nó là sum / 100. sd Đây là lối thoát dễ dàng, Wikipedia (tiếng Anh đơn giản). min

{
  "sum": {
    "t": {
      "start": 1785103,
      "mid": 1826679,
      "end": 1719594,
      "double": 2110823,
      "many": 4153368
    },
    "c": {
      "start": 1720260,
      "mid": 1799579,
      "end": 1716883,
      "double": 2097473,
      "many": 3836265
    }
  },
  "avg": {
    "t": {
      "start": 17851.03,
      "mid": 18266.79,
      "end": 17195.94,
      "double": 21108.23,
      "many": 41533.68
    },
    "c": {
      "start": 17202.6,
      "mid": 17995.79,
      "end": 17168.83,
      "double": 20974.73,
      "many": 38362.65
    }
  },
  "sd": {
    "t": {
      "start": 858.7857061572462,
      "mid": 886.0941856823124,
      "end": 786.5366719994689,
      "double": 905.5376950188214,
      "many": 1744.9005638144542
    },
    "c": {
      "start": 599.0468429096342,
      "mid": 719.1084521127534,
      "end": 935.9367719563112,
      "double": 991.5642274204934,
      "many": 1465.1116774840066
    }
  },
  "aad": {
    "t": {
      "start": 579.1207999999996,
      "mid": 576.5628000000003,
      "end": 526.8268,
      "double": 586.9651999999998,
      "many": 1135.9432000000002
    },
    "c": {
      "start": 467.96399999999966,
      "mid": 443.09220000000016,
      "end": 551.1318000000008,
      "double": 610.2321999999999,
      "many": 1020.1310000000003
    }
  },
  "min": {
    "t": {
      "start": 16932,
      "mid": 17238,
      "end": 16387,
      "double": 20016,
      "many": 39327
    },
    "c": {
      "start": 16477,
      "mid": 17137,
      "end": 16226,
      "double": 19863,
      "many": 36424
    }
  },
  "max": {
    "t": {
      "start": 23310,
      "mid": 24102,
      "end": 21258,
      "double": 26883,
      "many": 49103
    },
    "c": {
      "start": 19328,
      "mid": 23203,
      "end": 22859,
      "double": 26875,
      "many": 44352
    }
  },
  "median": {
    "t": {
      "start": 17571,
      "mid": 18062,
      "end": 16974,
      "double": 20874,
      "many": 41171.5
    },
    "c": {
      "start": 16893.5,
      "mid": 18213,
      "end": 17016.5,
      "double": 20771,
      "many": 38849
    }
  }
}
0 là giá trị tối thiểu và tối đa của một lần chạy tương ứng.

Kết quả

Có vẻ như các mẫu nhanh hơn cho các biến đơn không nằm ở cuối chuỗi, xem xét rằng trung bình thấp hơn và mức tối thiểu thấp hơn. Nếu bạn đặt một biến ở cuối chuỗi hoặc có nhiều biến trong chuỗi của bạn, việc kết hợp sẽ nhanh hơn.

Mặc dù mức tối thiểu cũng như trung bình của các mẫu tốt hơn so với các đối tác nối của chúng liên quan đến hai điều kiện đầu tiên, độ lệch chuẩn luôn tồi tệ hơn. Sự khác biệt dường như thu hẹp với nhiều biến số hơn (cần nhiều bài kiểm tra hơn).

Vì hầu hết các mẫu có thể sẽ không được sử dụng cho chỉ một biến trong một chuỗi, nên việc nói rằng việc gắn kết với Concatenation mang lại hiệu suất tốt hơn. Nhưng sự khác biệt là (ít nhất là bây giờ) rất nhẹ. Ở mức 100.000.000 (100 triệu) đánh giá với hai biến, chênh lệch chỉ là 273,58 ms, khoảng một phần tư giây ...


Chạy thứ hai

Cuộc chạy thứ hai trông hơi khác nhau. Ngoại trừ giá trị tối đa, độ lệch tuyệt đối trung bình và độ lệch chuẩn, mọi phép đo được chứng minh rằng sự kết hợp nhanh hơn các mẫu.

Ba phép đo được đề cập có giá trị thấp hơn (do đó tốt hơn) cho các mẫu khi biến ở cuối chuỗi hoặc khi có hai biến trong chuỗi.

Đây là kết quả:

{
  "sum": {
    "t": {
      "start": 1785103,
      "mid": 1826679,
      "end": 1719594,
      "double": 2110823,
      "many": 4153368
    },
    "c": {
      "start": 1720260,
      "mid": 1799579,
      "end": 1716883,
      "double": 2097473,
      "many": 3836265
    }
  },
  "avg": {
    "t": {
      "start": 17851.03,
      "mid": 18266.79,
      "end": 17195.94,
      "double": 21108.23,
      "many": 41533.68
    },
    "c": {
      "start": 17202.6,
      "mid": 17995.79,
      "end": 17168.83,
      "double": 20974.73,
      "many": 38362.65
    }
  },
  "sd": {
    "t": {
      "start": 858.7857061572462,
      "mid": 886.0941856823124,
      "end": 786.5366719994689,
      "double": 905.5376950188214,
      "many": 1744.9005638144542
    },
    "c": {
      "start": 599.0468429096342,
      "mid": 719.1084521127534,
      "end": 935.9367719563112,
      "double": 991.5642274204934,
      "many": 1465.1116774840066
    }
  },
  "aad": {
    "t": {
      "start": 579.1207999999996,
      "mid": 576.5628000000003,
      "end": 526.8268,
      "double": 586.9651999999998,
      "many": 1135.9432000000002
    },
    "c": {
      "start": 467.96399999999966,
      "mid": 443.09220000000016,
      "end": 551.1318000000008,
      "double": 610.2321999999999,
      "many": 1020.1310000000003
    }
  },
  "min": {
    "t": {
      "start": 16932,
      "mid": 17238,
      "end": 16387,
      "double": 20016,
      "many": 39327
    },
    "c": {
      "start": 16477,
      "mid": 17137,
      "end": 16226,
      "double": 19863,
      "many": 36424
    }
  },
  "max": {
    "t": {
      "start": 23310,
      "mid": 24102,
      "end": 21258,
      "double": 26883,
      "many": 49103
    },
    "c": {
      "start": 19328,
      "mid": 23203,
      "end": 22859,
      "double": 26875,
      "many": 44352
    }
  },
  "median": {
    "t": {
      "start": 17571,
      "mid": 18062,
      "end": 16974,
      "double": 20874,
      "many": 41171.5
    },
    "c": {
      "start": 16893.5,
      "mid": 18213,
      "end": 17016.5,
      "double": 20771,
      "many": 38849
    }
  }
}

Các giá trị trong ____ ____ 2 đối tượng dành cho các mẫu, các giá trị trong ____ 3-các đối tượng là để nối. start có nghĩa là biến ở đầu, giữa nó ở giữa, kết thúc rằng ở cuối và gấp đôi có hai biến. sum là tổng của tất cả 100 lần chạy. avg là chạy trung bình, có nghĩa là nó là sum / 100. sd Đây là lối thoát dễ dàng, Wikipedia (tiếng Anh đơn giản). min

{
  "sum": {
    "t": {
      "start": 1785103,
      "mid": 1826679,
      "end": 1719594,
      "double": 2110823,
      "many": 4153368
    },
    "c": {
      "start": 1720260,
      "mid": 1799579,
      "end": 1716883,
      "double": 2097473,
      "many": 3836265
    }
  },
  "avg": {
    "t": {
      "start": 17851.03,
      "mid": 18266.79,
      "end": 17195.94,
      "double": 21108.23,
      "many": 41533.68
    },
    "c": {
      "start": 17202.6,
      "mid": 17995.79,
      "end": 17168.83,
      "double": 20974.73,
      "many": 38362.65
    }
  },
  "sd": {
    "t": {
      "start": 858.7857061572462,
      "mid": 886.0941856823124,
      "end": 786.5366719994689,
      "double": 905.5376950188214,
      "many": 1744.9005638144542
    },
    "c": {
      "start": 599.0468429096342,
      "mid": 719.1084521127534,
      "end": 935.9367719563112,
      "double": 991.5642274204934,
      "many": 1465.1116774840066
    }
  },
  "aad": {
    "t": {
      "start": 579.1207999999996,
      "mid": 576.5628000000003,
      "end": 526.8268,
      "double": 586.9651999999998,
      "many": 1135.9432000000002
    },
    "c": {
      "start": 467.96399999999966,
      "mid": 443.09220000000016,
      "end": 551.1318000000008,
      "double": 610.2321999999999,
      "many": 1020.1310000000003
    }
  },
  "min": {
    "t": {
      "start": 16932,
      "mid": 17238,
      "end": 16387,
      "double": 20016,
      "many": 39327
    },
    "c": {
      "start": 16477,
      "mid": 17137,
      "end": 16226,
      "double": 19863,
      "many": 36424
    }
  },
  "max": {
    "t": {
      "start": 23310,
      "mid": 24102,
      "end": 21258,
      "double": 26883,
      "many": 49103
    },
    "c": {
      "start": 19328,
      "mid": 23203,
      "end": 22859,
      "double": 26875,
      "many": 44352
    }
  },
  "median": {
    "t": {
      "start": 17571,
      "mid": 18062,
      "end": 16974,
      "double": 20874,
      "many": 41171.5
    },
    "c": {
      "start": 16893.5,
      "mid": 18213,
      "end": 17016.5,
      "double": 20771,
      "many": 38849
    }
  }
}
0 là giá trị tối thiểu và tối đa của một lần chạy tương ứng.

Tại sao Backtick được sử dụng trong JavaScript?

Backticks là một tính năng ES6 cho phép bạn tạo chuỗi trong JavaScript. Mặc dù Backticks chủ yếu được sử dụng cho HTML hoặc mục đích nhúng mã, nhưng chúng cũng hoạt động tương tự như trích dẫn đơn và đôi. Ngoài ra, sử dụng BackTicks giúp dễ dàng hơn cho các hoạt động chuỗi.allows you to create strings in JavaScript. Although backticks are mostly used for HTML or code embedding purposes, they also act similar to single and double quotes. Besides, using backticks makes it easier for string operations.

Backticks được gọi là gì trong JavaScript?

Các chữ cái được đặt trong các ký tự Backtick (`) thay vì các trích dẫn kép hoặc đơn.Cùng với việc có các chuỗi bình thường, các chữ cái mẫu cũng có thể chứa các phần khác được gọi là trình giữ chỗ, được các biểu thức nhúng được phân định bằng dấu hiệu đô la và niềng răng xoăn: $ {expression}. are enclosed by backtick ( ` ) characters instead of double or single quotes. Along with having normal strings, template literals can also contain other parts called placeholders, which are embedded expressions delimited by a dollar sign and curly braces: ${expression} .

JavaScript có nội suy chuỗi không?

Nội suy chuỗi trong JavaScript là một quá trình trong đó một biểu thức được chèn hoặc đặt trong chuỗi.Để chèn hoặc nhúng biểu thức này vào chuỗi, một mẫu theo nghĩa đen được sử dụng.Bằng cách sử dụng phép nội suy chuỗi trong JavaScript, các giá trị như các biến và biểu thức và tính toán toán học cũng có thể được thêm vào.. To insert or embed this expression into the string a template literal is used. By using string interpolation in JavaScript, values like variables and mathematical expressions and calculations can also be added.

Việc sử dụng Backticks là gì?

Backtick `là một dấu hiệu đánh máy được sử dụng chủ yếu trong điện toán.Nó còn được gọi là Rodequote, Grave hoặc Grave Scons.Nhân vật được thiết kế cho các máy đánh chữ để thêm một điểm nhấn nghiêm trọng vào một chữ cái cơ sở (trường hợp thấp hơn), bằng cách vượt qua nó trên bức thư đó.a typographical mark used mainly in computing. It is also known as backquote, grave, or grave accent. The character was designed for typewriters to add a grave accent to a (lower-case) base letter, by overtyping it atop that letter.