{"id":923,"date":"2008-06-26T08:07:11","date_gmt":"2008-06-26T06:07:11","guid":{"rendered":"http:\/\/firefang.net\/blog\/923"},"modified":"2008-06-26T12:22:38","modified_gmt":"2008-06-26T10:22:38","slug":"c-%d7%99%d7%95%d7%aa%d7%a8-%d7%9e%d7%94%d7%99%d7%a8%d7%94-%d7%9ejava","status":"publish","type":"post","link":"https:\/\/firefang.net\/blog\/923","title":{"rendered":"C \u05d9\u05d5\u05ea\u05e8 \u05de\u05d4\u05d9\u05e8\u05d4 \u05deJava"},"content":{"rendered":"<p>\u05db\u05d5\u05dc\u05dd \u05d9\u05d5\u05d3\u05e2\u05d9\u05dd \u05e9C \u05d9\u05d5\u05ea\u05e8 \u05de\u05d4\u05d9\u05e8\u05d4 \u05de\u05d2'\u05d0\u05d5\u05d5\u05d4, \u05e0\u05db\u05d5\u05df?<br \/>\n\u05e4\u05e8\u05d5\u05d9\u05d9\u05e7\u05d8\u05d9\u05dd \u05e8\u05e6\u05d9\u05e0\u05d9\u05d9\u05dd \u05e9\u05dc \u05d2\u05e8\u05d9\u05e1\u05ea \u05de\u05e1\u05e4\u05e8\u05d9\u05dd (Number crunching) \u05db\u05de\u05d5 \u05e2\u05d9\u05d1\u05d5\u05d3 \u05ea\u05de\u05d5\u05e0\u05d4 \u05d1\u05d6\u05de\u05df \u05d0\u05de\u05ea, \u05d6\u05d9\u05d4\u05d5\u05d9 \u05e7\u05d5\u05dc, \u05e8\u05d9\u05e0\u05d3\u05d5\u05e8, \u05d3\u05d7\u05d9\u05e1\u05d4, \u05e7\u05d9\u05d3\u05d5\u05d3 \u05d5\u05d5\u05d9\u05d3\u05d0\u05d5 \u05d5\u05db\u05d5 \u05d1\u05d3\u05e8\u05da \u05db\u05dc\u05dc \u05e0\u05db\u05ea\u05d1\u05d9\u05dd \u05d1C (\u05d0\u05d5 C++).<br \/>\n\u05d1\u05d4\u05d9\u05e0\u05ea\u05df \u05e9\u05ea\u05d9 \u05e4\u05d9\u05e1\u05d5\u05ea \u05e7\u05d5\u05d3 \u05e9\u05e2\u05d5\u05e9\u05d5\u05ea \u05d1\u05d3\u05d9\u05d5\u05e7 \u05d0\u05ea \u05d0\u05d5\u05ea\u05d5 \u05d3\u05d1\u05e8, \u05de\u05e2\u05e0\u05d9\u05d9\u05df \u05dc\u05e8\u05d0\u05d5\u05ea \u05d0\u05ea \u05d1\u05de\u05d4 \u05de\u05ea\u05d1\u05d8\u05d0 \u05d4\u05d9\u05ea\u05e8\u05d5\u05df \u05e9\u05dc C \u05e2\u05dc \u05d2'\u05d0\u05d5\u05d5\u05d4.<br \/>\n\u05dc\u05de\u05d4 \u05d0\u05e4\u05e9\u05e8 \u05dc\u05e6\u05e4\u05d5\u05ea \u05dc\u05d9\u05ea\u05e8\u05d5\u05df?<br \/>\n\u05db\u05d9 \u05d2'\u05d0\u05d5\u05d5\u05d4 \u05e8\u05e6\u05d4 \u05de\u05e2\u05dc JVM, \u05d5\u05d4JVM \u05de\u05d5\u05e1\u05d9\u05e3 \u05ea\u05e7\u05d5\u05e8\u05d4, \u05d1\u05e8\u05d5\u05e8 \u05e9C \u05ea\u05e8\u05d5\u05e5 \u05d9\u05d5\u05ea\u05e8 \u05de\u05d4\u05e8 \u05db\u05d9 \u05d4\u05d9\u05d0 \u05e8\u05e6\u05d4 \u05d9\u05e9\u05e8 \u05e2\u05dc \u05d4CPU \u05d5\u05dc\u05d0 \u05d3\u05e8\u05da \u05d4JVM.<\/p>\n<p>\u05d4\u05e0\u05d4 \u05e9\u05ea\u05d9 \u05e4\u05d9\u05e1\u05d5\u05ea \u05e7\u05d5\u05d3, \u05d0\u05d7\u05ea \u05d1\u05d2'\u05d0\u05d5\u05d5\u05d4 \u05d5\u05d0\u05d7\u05ea \u05d1C. \u05e9\u05ea\u05d9 \u05d4\u05ea\u05d5\u05db\u05e0\u05d9\u05d5\u05ea \u05de\u05d0\u05ea\u05d7\u05dc\u05d5\u05ea \u05e9\u05ea\u05d9 \u05de\u05d8\u05e8\u05d9\u05e6\u05d5\u05ea \u05d2\u05d3\u05d5\u05dc\u05d5\u05ea \u05d5\u05de\u05db\u05e4\u05d9\u05dc\u05d5\u05ea \u05d0\u05d5\u05ea\u05df \u05d0\u05d7\u05ea \u05d1\u05e9\u05e0\u05d9\u05d4, \u05d4\u05e7\u05d5\u05d3 \u05d1\u05d4\u05d7\u05dc\u05d8 \u05dc\u05d0 \u05d9\u05e2\u05d9\u05dc \u05d1\u05de\u05d9\u05d5\u05d7\u05d3 \u05d1\u05e8\u05de\u05ea \u05d4\u05d0\u05dc\u05d2\u05d5\u05e8\u05d9\u05ea\u05dd, \u05d0\u05d1\u05dc \u05d4\u05d5\u05d0 \u05d6\u05d4\u05d4 \u05de\u05d1\u05d7\u05d9\u05e0\u05d4 \u05de\u05d9\u05de\u05d5\u05e9\u05d9\u05ea.<\/p>\n<p>\u05d4\u05e0\u05d4 \u05d4\u05e7\u05d5\u05d3:<br \/>\n\u05ea\u05d5\u05db\u05e0\u05d9\u05ea C:<br \/>\n[code lang=&quot;c&quot;]<br \/>\n#include <stdio.h><br \/>\n#include <stdlib.h><\/p>\n<p>int main(int argc, char **argv)<br \/>\n{<br \/>\n   int i,j,k;<br \/>\n   int N = 2500;<br \/>\n   printf(&quot;N = %d\\n&quot;, N);<br \/>\n   double *A = malloc(N*N*sizeof(double));<br \/>\n   double *B = malloc(N*N*sizeof(double));<br \/>\n   double *C = malloc(N*N*sizeof(double));<br \/>\n   double *bj = malloc(N*sizeof(double));<br \/>\n     for (i = 0; i < N; i++)\n       for (j = 0; j < N; j++)\n       {\n           int n = i*N+j;\n           A[n] = i * j;\n       }\n\n   for (i = 0; i < N; i++)\n       for (j = 0; j < N; j++)\n           B[i*N+j] = i * j * j;\n\n   \/\/ order 7: jik optimized ala JAMA\n   for (j = 0; j < N; j++) {\n       for (k = 0; k < N; k++)\n           bj[k] = B[k*N+j];\n       for (i = 0; i < N; i++) {\n           double s = 0;\n           for (k = 0; k < N; k++) {\n               s += A[i*N+k] * bj[k];\n           }\n           C[i*N+j] = s;\n       }\n   }\n   printf(\"done\\n\");\n   return 0;\n}\n[\/code]\n\n\u05ea\u05d5\u05db\u05e0\u05d9\u05ea \u05d2'\u05d0\u05d5\u05d5\u05d4:\n[code lang=\"java\"]\npublic class Matrix\n{\n    public static void main(String[] args)\n    {\n        int i,j,k;\n        int N = 2500;\n        System.err.println(\"N = \" + N);\n        double A[] = new double[N*N];\n        double B[] = new double[N*N];\n        double C[] = new double[N*N];\n        double bj[] = new double[N];\n        for (i = 0; i < N; i++)\n            for (j = 0; j < N; j++)\n            {\n                int n = i*N+j;\n                A[n] = i * j;\n            }\n\n        for (i = 0; i < N; i++)\n            for (j = 0; j < N; j++)\n                B[i*N+j] = i * j * j;\n\n        \/\/ order 7: jik optimized ala JAMA\n        for (j = 0; j < N; j++) {\n            for (k = 0; k < N; k++)\n                bj[k] = B[k*N+j];\n            for (i = 0; i < N; i++) {\n                double s = 0;\n                for (k = 0; k < N; k++) {\n                    s += A[i*N+k] * bj[k];\n                }\n                C[i*N+j] = s;\n            }\n        }\n        System.err.println(\"done\");\n    }\n}\n[\/code]\n\n\u05de\u05d9 \u05dc\u05d5\u05e7\u05d7 \u05d4\u05ea\u05e2\u05e8\u05d1\u05d5\u05ea \u05e9\u05dc \u05d1\u05db\u05de\u05d4 C \u05e2\u05d5\u05e7\u05e4\u05ea \u05d0\u05ea \u05d2'\u05d0\u05d5\u05d5\u05d4 \u05d1\u05d6\u05de\u05df \u05d4\u05e8\u05d9\u05e6\u05d4 \u05e9\u05dc \u05d6\u05d4?\n\u05e0\u05e7\u05de\u05e4\u05dc \u05d5\u05e0\u05d1\u05d3\u05d5\u05e7:\n[code]\n$javac Matrix.java\n$gcc Matrix.c -o matrix\n$ date;java Matrix;date;.\/matrix;date\nThu Jun 26 08:42:10 IDT 2008\nN = 2500\ndone\nThu Jun 26 08:42:54 IDT 2008\nN = 2500\ndone\nThu Jun 26 08:44:31 IDT 2008\n[\/code]\n\n\u05dc\u05ea\u05d5\u05db\u05e0\u05d9\u05ea \u05d1\u05d2'\u05d0\u05d5\u05d5\u05d4 \u05dc\u05e7\u05d7 \u05dc\u05e7\u05d7 44 \u05e9\u05e0\u05d9\u05d5\u05ea \u05d5\u05dc\u05ea\u05d5\u05db\u05e0\u05d9\u05ea \u05d1C \u05dc\u05e7\u05d7 107 \u05e9\u05e0\u05d9\u05d5\u05ea.\n\u05de\u05e9\"\u05dc.\n\n\u05d0\u05d4, \u05e8\u05d2\u05e2. \u05e8\u05e6\u05d9\u05e0\u05d5 \u05dc\u05d4\u05e8\u05d0\u05d5\u05ea \u05e9C \u05d9\u05d5\u05ea\u05e8 \u05de\u05d4\u05d9\u05e8\u05d4!\n\u05d8\u05d5\u05d1, \u05de\u05e1\u05ea\u05d1\u05e8 \u05e9\u05dc\u05d0 \u05db\u05d3\u05d0\u05d9 \u05dc\u05e7\u05d7\u05ea \u05d3\u05d1\u05e8\u05d9\u05dd \u05db\u05de\u05d5\u05d1\u05e0\u05d9\u05dd \u05de\u05d0\u05dc\u05d9\u05d4\u05dd, \u05d2\u05dd \u05d0\u05dd \u05db\u05d5\u05dc\u05dd \u05d9\u05d5\u05d3\u05e2\u05d9\u05dd \u05e9\u05d4\u05dd \u05e0\u05db\u05d5\u05e0\u05d9\u05dd.\n\u05d0\u05dd \u05d0\u05ea\u05dd \u05d7\u05d5\u05e9\u05d1\u05d9\u05dd \u05e9\u05e8\u05d9\u05de\u05d9\u05ea\u05d9, \u05ea\u05e8\u05d9\u05e6\u05d5 \u05d1\u05e2\u05e6\u05de\u05db\u05dd. \u05d1\u05d3\u05e7\u05ea\u05d9 \u05e2\u05dc \u05e9\u05e0\u05d9 \u05de\u05d7\u05e9\u05d1\u05d9\u05dd, \u05d0\u05d7\u05d3 \u05e2\u05dd \u05e9\u05ea\u05d9 \u05dc\u05d9\u05d1\u05d5\u05ea \u05e9\u05dc 3GHZ, \u05d5\u05d0\u05d7\u05d3 \u05e2\u05dd \u05d0\u05e8\u05d1\u05e2 \u05dc\u05d9\u05d1\u05d5\u05ea \u05e9\u05dc 2.4GHZ (\u05db\u05de\u05d5\u05d1\u05df \u05e9\u05d4\u05e8\u05d0\u05e9\u05d5\u05df \u05d4\u05d5\u05d1\u05d9\u05dc \u05d1\u05db\u05de\u05d4 \u05d0\u05d7\u05d5\u05d6\u05d9\u05dd \u05d8\u05d5\u05d1\u05d9\u05dd, \u05d0\u05d1\u05dc \u05d4\u05d9\u05d7\u05e1 \u05e0\u05e9\u05de\u05e8).\n\u05d4\u05e9\u05ea\u05de\u05e9\u05ea\u05d9 \u05d1Java 1.6.06.\n\n\u05dc\u05d3\u05e2\u05ea\u05d9 \u05d4\u05ea\u05d5\u05e4\u05e2\u05d4 \u05d4\u05d6\u05d5 \u05e0\u05d5\u05d1\u05e2\u05ea \u05de\u05d4\u05d4\u05ea\u05e7\u05d3\u05de\u05d5\u05ea \u05d4\u05de\u05d3\u05d4\u05d9\u05de\u05d4 \u05e9\u05dc \u05e1\u05d1\u05d9\u05d1\u05ea \u05d4\u05e8\u05d9\u05e6\u05d4 \u05e9\u05dc \u05d2'\u05d0\u05d5\u05d5\u05d4 \u05d1\u05ea\u05d7\u05d5\u05dd \u05d4Hotspot.\nHotspot \u05d4\u05d9\u05d0 \u05d8\u05db\u05e0\u05d5\u05dc\u05d5\u05d2\u05d9\u05d4 \u05e9\u05de\u05e7\u05de\u05e4\u05dc\u05ea \u05d7\u05dc\u05e7\u05d9\u05dd \"\u05d7\u05de\u05d9\u05dd\" \u05d1\u05ea\u05d5\u05db\u05e0\u05d9\u05ea \u05d1\u05d6\u05de\u05df, \u05d0\u05d1\u05dc \u05d1\u05d6\u05de\u05df \u05e8\u05d9\u05e6\u05d4. \u05de\u05db\u05d9\u05d5\u05d5\u05df \u05e9\u05d6\u05de\u05d9\u05e0\u05d5\u05ea \u05dcHotspot \u05e1\u05d8\u05d8\u05d9\u05e1\u05d8\u05d9\u05e7\u05d5\u05ea \u05d1\u05d6\u05de\u05df \u05d4\u05e8\u05d9\u05e6\u05d4 \u05d4\u05de\u05de\u05e9\u05d9 \u05e9\u05dc \u05d4\u05ea\u05d5\u05db\u05e0\u05d9\u05ea \u05d4\u05d9\u05d0 \u05d9\u05db\u05d5\u05dc\u05d4 \u05dc\u05e9\u05e0\u05d5\u05ea \u05d0\u05ea \u05d4\u05e7\u05d5\u05d3 \u05db\u05db\u05d4 \u05e9\u05d9\u05e8\u05d5\u05e5 \u05d1\u05e6\u05d5\u05e8\u05d4 \u05d0\u05d5\u05e4\u05d8\u05d9\u05de\u05dc\u05d9\u05ea \u05dc\u05d0\u05d5\u05e8 \u05d4\u05ea\u05e0\u05d4\u05d2\u05d5\u05ea \u05e9\u05dc \u05d4\u05ea\u05d5\u05db\u05e0\u05d9\u05ea \u05d5\u05dc\u05d0 \u05db\u05e0\u05e1\u05d9\u05d5\u05df \u05de\u05dc\u05d5\u05de\u05d3 \u05dc\u05e0\u05d7\u05e9 \u05de\u05d4 \u05d9\u05d4\u05d9\u05d4 \u05d9\u05d5\u05ea\u05e8 \u05de\u05d4\u05e8 \u05de\u05d4\u05ea\u05d1\u05d5\u05e0\u05e0\u05d5\u05ea \u05d5\u05e9\u05d9\u05e0\u05d5\u05d9 \u05d4\u05e7\u05d5\u05d3, \u05de\u05d4 \u05e9\u05e2\u05d5\u05e9\u05d4 \u05e7\u05d5\u05de\u05e4\u05d9\u05d9\u05dc\u05e8 \u05e1\u05d8\u05d0\u05d8\u05d9.\n\n\u05e2\u05d3\u05db\u05d5\u05df:\n\u05e7\u05d9\u05de\u05e4\u05dc\u05ea\u05d9 \u05d0\u05ea \u05d4\u05ea\u05d5\u05db\u05e0\u05d9\u05ea C \u05e2\u05dd \u05d0\u05d5\u05e4\u05d8\u05d9\u05de\u05d9\u05d6\u05e6\u05d9\u05d4 \u05de\u05e7\u05e1\u05d9\u05de\u05dc\u05d9\u05ea \u05d5\u05d4\u05ea\u05d5\u05e6\u05d0\u05d4 \u05e9\u05dc\u05d4 \u05d4\u05e9\u05ea\u05e4\u05e8\u05d4 \u05e4\u05dc\u05d0\u05d9\u05dd:\n[code]\ngcc -O3 Matrix.c\n$ date;.\/matrix;date\nThu Jun 26 11:26:00 IDT 2008\nN = 2500\ndone\nThu Jun 26 11:26:29 IDT 2008\n[\/code]\n\n\u05d4\u05e4\u05e2\u05dd \u05d4\u05ea\u05d5\u05e6\u05d0\u05d4 \u05e9\u05dc C \u05d4\u05d9\u05d0 29 \u05e9\u05e0\u05d9\u05d5\u05ea.\n\u05d8\u05d5\u05d1 \u05de\u05e9\u05de\u05e2\u05d5\u05ea\u05d9\u05ea \u05de\u05e7\u05d5\u05d3\u05dd, \u05d5\u05d2\u05dd \u05d9\u05d5\u05ea\u05e8 \u05de\u05d4\u05d9\u05e8 \u05d1\u05db30% \u05de\u05d2'\u05d0\u05d5\u05d5\u05d4.\n\n\u05e2\u05d3\u05db\u05d5\u05df 2:\n\u05e9\u05de\u05ea\u05d9 \u05dc\u05d1 \u05e9\u05e7\u05d5\u05d3 \u05e9\u05e7\u05d5\u05de\u05e4\u05dc \u05e2\u05dd javac \u05d0\u05d9\u05d8\u05d9 \u05de\u05e7\u05d5\u05d3 \u05e9\u05e7\u05d5\u05de\u05e4\u05dc \u05d1eclipse. \u05e0\u05d7\u05e9\u05ea\u05d9 \u05e9eclipse \u05de\u05e7\u05de\u05e4\u05dc \u05e2\u05dd jikes (\u05d0\u05e0\u05d9 \u05dc\u05d0 \u05d1\u05d8\u05d5\u05d7 \u05d1\u05d6\u05d4).\n\u05e0\u05d9\u05e1\u05d9\u05ea\u05d9 \u05e2\u05dd jikes \u05d5\u05d4\u05ea\u05d5\u05e6\u05d0\u05d4 \u05d4\u05e9\u05ea\u05d5\u05d5\u05ea\u05d4, \u05ea\u05d9\u05e7\u05d5 29 \u05e9\u05e0\u05d9\u05d5\u05ea.\n[code]\n$ javac Matrix.java ; time java Matrix\nN = 2500\ndone\n\nreal    0m42.854s\nuser    0m55.335s\nsys     0m26.214s\n\n$ jikes --bootclasspath \/usr\/lib\/jvm\/java-6-sun-1.6.0.06\/jre\/lib\/rt.jar Matrix.java ; time java Matrix\nN = 2500\ndone\n\nreal    0m29.463s\nuser    0m29.366s\nsys     0m0.108s\n[\/code]\n\n\u05d0\u05d2\u05d1, \u05d6\u05d5 \u05ea\u05d5\u05e6\u05d0\u05d4 \u05de\u05d3\u05d4\u05d9\u05de\u05d4 \u05e9\u05db\u05d3\u05d0\u05d9 \u05e9\u05db\u05dc \u05de\u05e4\u05ea\u05d7 \u05d2'\u05d0\u05d5\u05d5\u05d4 \u05d9\u05db\u05d9\u05e8.\n\n\u05de\u05d9 \u05e8\u05d5\u05e6\u05d4 \u05dc\u05e9\u05e4\u05e8 \u05d0\u05ea \u05d4\u05ea\u05d5\u05e6\u05d0\u05d5\u05ea \u05e2\u05d5\u05d3?\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u05db\u05d5\u05dc\u05dd \u05d9\u05d5\u05d3\u05e2\u05d9\u05dd \u05e9C \u05d9\u05d5\u05ea\u05e8 \u05de\u05d4\u05d9\u05e8\u05d4 \u05de\u05d2'\u05d0\u05d5\u05d5\u05d4, \u05e0\u05db\u05d5\u05df? \u05e4\u05e8\u05d5\u05d9\u05d9\u05e7\u05d8\u05d9\u05dd \u05e8\u05e6\u05d9\u05e0\u05d9\u05d9\u05dd \u05e9\u05dc \u05d2\u05e8\u05d9\u05e1\u05ea \u05de\u05e1\u05e4\u05e8\u05d9\u05dd (Number crunching) \u05db\u05de\u05d5 \u05e2\u05d9\u05d1\u05d5\u05d3 \u05ea\u05de\u05d5\u05e0\u05d4 \u05d1\u05d6\u05de\u05df \u05d0\u05de\u05ea, \u05d6\u05d9\u05d4\u05d5\u05d9 \u05e7\u05d5\u05dc, \u05e8\u05d9\u05e0\u05d3\u05d5\u05e8, \u05d3\u05d7\u05d9\u05e1\u05d4, \u05e7\u05d9\u05d3\u05d5\u05d3 \u05d5\u05d5\u05d9\u05d3\u05d0\u05d5 \u05d5\u05db\u05d5 \u05d1\u05d3\u05e8\u05da \u05db\u05dc\u05dc \u05e0\u05db\u05ea\u05d1\u05d9\u05dd \u05d1C (\u05d0\u05d5 C++). \u05d1\u05d4\u05d9\u05e0\u05ea\u05df \u05e9\u05ea\u05d9 \u05e4\u05d9\u05e1\u05d5\u05ea \u05e7\u05d5\u05d3 \u05e9\u05e2\u05d5\u05e9\u05d5\u05ea \u05d1\u05d3\u05d9\u05d5\u05e7 \u05d0\u05ea \u05d0\u05d5\u05ea\u05d5 \u05d3\u05d1\u05e8, \u05de\u05e2\u05e0\u05d9\u05d9\u05df \u05dc\u05e8\u05d0\u05d5\u05ea \u05d0\u05ea \u05d1\u05de\u05d4 \u05de\u05ea\u05d1\u05d8\u05d0 \u05d4\u05d9\u05ea\u05e8\u05d5\u05df \u05e9\u05dc C \u05e2\u05dc \u05d2'\u05d0\u05d5\u05d5\u05d4. \u05dc\u05de\u05d4 \u05d0\u05e4\u05e9\u05e8 \u05dc\u05e6\u05e4\u05d5\u05ea \u05dc\u05d9\u05ea\u05e8\u05d5\u05df? &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/firefang.net\/blog\/923\" class=\"more-link\">\u05dc\u05d4\u05de\u05e9\u05d9\u05da \u05dc\u05e7\u05e8\u05d5\u05d0<span class=\"screen-reader-text\"> C \u05d9\u05d5\u05ea\u05e8 \u05de\u05d4\u05d9\u05e8\u05d4 \u05deJava<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19,21,7],"tags":[],"class_list":["post-923","post","type-post","status-publish","format-standard","hentry","category-java","category-computers","category-programming"],"_links":{"self":[{"href":"https:\/\/firefang.net\/blog\/wp-json\/wp\/v2\/posts\/923","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/firefang.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/firefang.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/firefang.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/firefang.net\/blog\/wp-json\/wp\/v2\/comments?post=923"}],"version-history":[{"count":0,"href":"https:\/\/firefang.net\/blog\/wp-json\/wp\/v2\/posts\/923\/revisions"}],"wp:attachment":[{"href":"https:\/\/firefang.net\/blog\/wp-json\/wp\/v2\/media?parent=923"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/firefang.net\/blog\/wp-json\/wp\/v2\/categories?post=923"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/firefang.net\/blog\/wp-json\/wp\/v2\/tags?post=923"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}